@DISingleton() @BaseUrl("/api/v2020/app/") export default class TaskService extends BaseService { @Get("user") public getUser(): Promise; @Get("tasks") public getTasks( @Query("search") search: string, // default value should be specified in // decorator and not in argument declaration @Query("status", "open") status?: string ): Promise @Get("tasks/{id}/attachments") public getAttachments( @Path("id") id: number ): Promise ; @Put("tasks") public createTask(@Body task: ITask): Promise ; @Post("tasks/{id}/attachments") public uploadAttachment( @Path("id") id: number, @Body att: IAttachment, cancelToken: CancelToken): Promise ; }
Как можно легко, это очень легко настроить службу для отдыха.
Кэширование
@Get("tasks", { jsCacheSeconds: 900 }) public getTasks( @Query("search") search: string, // default value should be specified in // decorator and not in argument declaration @Query("status", "open") status?: string ): Promise
Кэширует ответ в JavaScript на 900 секунд.
Кэширование на основе результата
@Get("tasks", { jsCacheSeconds: (r) => r.length ? 900 : 0 }) public getTasks( @Query("search") search: string, // default value should be specified in // decorator and not in argument declaration @Query("status", "open") status?: string ): Promise
Реакция кэша только в том случае, если у возвращенного массива есть какие-либо элементы.
Фиксированные заголовки
@Get("tasks", { headers: { "x-cache": "none", "accept": "application/json" } }) public getTasks( @Query("search") search: string, // default value should be specified in // decorator and not in argument declaration @Query("status", "open") status?: string ): Promise
Заголовок по параметрам
@Get("tasks") public getTasks( @Header("x-auth") auth: string, @Query("search") search: string, // default value should be specified in // decorator and not in argument declaration @Query("status", "open") status?: string ): Promise
Варианты анализа JSON
@Get("tasks", { jsonOptions: { namingStrategy: "underscore", indent: 2, dateConverter: { regex: dateFormatRegex, valueConverter: { fromSource:(v: string) => Date, fromTarget:(date: Date) => string } } } }) public getTasks( @Header("x-auth") auth: string, @Query("search") search: string, // default value should be specified in // decorator and not in argument declaration @Query("status", "open") status?: string ): Promise
@Get("tasks", { returnHeaders: true }) public getTasks( @Header("x-auth") auth: string, @Query("search") search: string, // default value should be specified in // decorator and not in argument declaration @Query("status", "open") status?: string ): Promise>
Единственное различие, тип результата всегда IAPIRESPONSE
, который содержит заголовки
и стоимость
.
Сервисы издевательства заставляют тестирование подразделения и разработки дизайна очень легко.
@DISingleton({ mock: "./mocks/MockTaskService" }) @BaseUrl("/api/v2020/app/") export default class TaskService extends BaseService { ...
Теперь вы можете сохранить Mocktaskservice
внутри Макеты
папка. И переопределить каждый способ возвращать данные о проектировании.
Погружать в образцы
https://www.webatoms.in/samples.html#contextId=0
Веб-атомы/ядро
MVVM Framework для JavaScript для браузера, Xamarin. Формы, напишите TSX/Tymdercript вместо XAML и C #, горячей перезагрузки в прямом эфире, опубликованном Xamarin. Формирует приложения.
Ядро веб-атомов – это база абстракции UI, а также мощный шаблон MVVM для дизайна современных веб- и мобильных приложений.
Xamarin. Формы особенности
- Используйте VS-код для развития Xamarin. Формы
- Напишите Teamscript вместо C #
- Напишите TSX (JSX) вместо XAML
- Живая Горячая перезагрузка для опубликованного приложения
Веб-функции
- Абстрактный компонент атома
- Абстрактное устройство API (услуга браузера, трансляция сообщений)
- Тема и стили поддерживают без CSS
- Один раз, в одну сторону и Двухсторонняя поддержка связывания
- Простая впрыск зависимости
- В построенной простой структуре тестирования подразделения
- Поддержка модуля UMD
- Полнофункциональный MVVM Framework с мощной проверкой
Структура папок
- Все представления для Интернета должны быть размещены в папке «Веб» в папке «SRC».
- Все виды для форм Xamarin должны быть размещены в папке «XF» внутри папки «SRC».
Пример структуры папки
src +--images | +--AddButton.svg | +--view-Models | +--TaskListViewModel.ts | +--TaskEditorViewModel.ts | +--web | +--tasks | +--TaskListView.tsx | +--TaskEditorView.tsx | +--xf +--tasks +--TaskListView.tsx +--TaskEditorView.tsx
Пример обзора
Оригинал: “https://dev.to/web-atoms/retrofit-inspired-rest-services-in-web-atoms-core-1nap”