NSwag и Liquid: загрузка данных из нескольких форм - PullRequest
0 голосов
/ 06 августа 2020

Я еще не нашел ничего, связанного с моим вариантом использования.

Мы используем. NET Framework и NSwag.

В основном мы просто пытаемся для загрузки изображения (= blob | ArrayBuffer) с некоторыми метаданными в наш C# бэкэнд. Все работает нормально, но, поскольку мы используем NSwag, мы хотели бы автоматически генерировать правильный код вместо того, чтобы иметь вспомогательный класс для загрузки файлов.

Наш желаемый автоматически сгенерированный метод контроллера на стороне клиента:

uploadDamagePhoto(content: UploadDamagePhotoRequestDTO | null) {

    let url = this.baseUrl + '/internal-api/v1/photos/upload';
    url = url.replace(/[?&]$/, '');

    const content = JSON.stringify(request?.toJSON());

    const options: any = {
        body: content,
        observe: 'response',
        responseType: 'blob',
        transformRequest: [],
        headers: new HttpHeaders({
            Accept: 'application/json',
            **// NO CONTENT-TYPE HERE**
        }
    **// Use formData instead of stringified content**
    const formData = new FormData();
    formData.append('file', content.imageDataBlob);
    formData.append('content', content.replace('{}', '[]'));

    **// use this.http.post instead of this.http.request**
    return this.http.post(url, formData, options).pipe(mergeMap((response: any) => {
        return this.cargoHubApi.processUploadPhoto(response);
    })).pipe(catchError((response: any) => {
        if (response instanceof HttpResponseBase) {
            try {
                return this.cargoHubApi.processUploadPhoto(response as any);
            } catch (e) {
                return throwError(e) as any as Observable<ResponseDTOOfGuid | null>;
            }
        } else {
            return throwError(response) as any as Observable<ResponseDTOOfGuid | null>;
        }
    }));
}

У нас уже есть жидкие шаблоны. Тем не менее, я не знаю, как его адаптировать для загрузки многостраничной формы. Думаю, уже есть встроенное решение. Тем не менее, я подумал о реализации простой аннотации (например, ExpectMultipart) и оценке того, есть ли эта аннотация у операции с жидкостью. в решении для данных, состоящих из нескольких частей.

Заранее всем спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...