fix(server): use HTTP status OK instead of CREATED for assets (#2876)

The NGINX gzip module does not compress responses with a status of 201, which is
a major issue specifically for the /api/asset/time-bucket endpoint where
responses can be upwards of 5Mi. The size of the response is dramatically
reduced with gzip to 500Ki in some cases.

https://trac.nginx.org/nginx/ticket/471
https://trac.nginx.org/nginx/ticket/394

The signature of these endpoints should be GET rather than POST anyway, but that
is a bigger discussion.
This commit is contained in:
Thomas 2023-06-20 14:49:36 +01:00 committed by GitHub
parent f003ff3c98
commit f9fbf1a2a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 7 deletions

View File

@ -1066,7 +1066,7 @@
} }
}, },
"responses": { "responses": {
"201": { "200": {
"description": "", "description": "",
"content": { "content": {
"application/json": { "application/json": {
@ -1595,7 +1595,7 @@
} }
}, },
"responses": { "responses": {
"201": { "200": {
"description": "", "description": "",
"content": { "content": {
"application/json": { "application/json": {
@ -1910,7 +1910,7 @@
} }
}, },
"responses": { "responses": {
"201": { "200": {
"description": "", "description": "",
"content": { "content": {
"application/json": { "application/json": {

View File

@ -7,6 +7,7 @@ import {
Header, Header,
Headers, Headers,
HttpCode, HttpCode,
HttpStatus,
Param, Param,
ParseFilePipe, ParseFilePipe,
Patch, Patch,
@ -111,7 +112,7 @@ export class AssetController {
const responseDto = await this.assetService.uploadFile(authUser, dto, file, livePhotoFile, sidecarFile); const responseDto = await this.assetService.uploadFile(authUser, dto, file, livePhotoFile, sidecarFile);
if (responseDto.duplicate) { if (responseDto.duplicate) {
res.status(200); res.status(HttpStatus.OK);
} }
return responseDto; return responseDto;
@ -193,6 +194,7 @@ export class AssetController {
} }
@Post('/search') @Post('/search')
@HttpCode(HttpStatus.OK)
searchAsset( searchAsset(
@AuthUser() authUser: AuthUserDto, @AuthUser() authUser: AuthUserDto,
@Body(ValidationPipe) dto: SearchAssetDto, @Body(ValidationPipe) dto: SearchAssetDto,
@ -201,6 +203,7 @@ export class AssetController {
} }
@Post('/count-by-time-bucket') @Post('/count-by-time-bucket')
@HttpCode(HttpStatus.OK)
getAssetCountByTimeBucket( getAssetCountByTimeBucket(
@AuthUser() authUser: AuthUserDto, @AuthUser() authUser: AuthUserDto,
@Body(ValidationPipe) dto: GetAssetCountByTimeBucketDto, @Body(ValidationPipe) dto: GetAssetCountByTimeBucketDto,
@ -235,6 +238,7 @@ export class AssetController {
} }
@Post('/time-bucket') @Post('/time-bucket')
@HttpCode(HttpStatus.OK)
getAssetByTimeBucket( getAssetByTimeBucket(
@AuthUser() authUser: AuthUserDto, @AuthUser() authUser: AuthUserDto,
@Body(ValidationPipe) dto: GetAssetByTimeBucketDto, @Body(ValidationPipe) dto: GetAssetByTimeBucketDto,
@ -284,7 +288,7 @@ export class AssetController {
*/ */
@SharedLinkRoute() @SharedLinkRoute()
@Post('/check') @Post('/check')
@HttpCode(200) @HttpCode(HttpStatus.OK)
checkDuplicateAsset( checkDuplicateAsset(
@AuthUser() authUser: AuthUserDto, @AuthUser() authUser: AuthUserDto,
@Body(ValidationPipe) dto: CheckDuplicateAssetDto, @Body(ValidationPipe) dto: CheckDuplicateAssetDto,
@ -296,7 +300,7 @@ export class AssetController {
* Checks if multiple assets exist on the server and returns all existing - used by background backup * Checks if multiple assets exist on the server and returns all existing - used by background backup
*/ */
@Post('/exist') @Post('/exist')
@HttpCode(200) @HttpCode(HttpStatus.OK)
checkExistingAssets( checkExistingAssets(
@AuthUser() authUser: AuthUserDto, @AuthUser() authUser: AuthUserDto,
@Body(ValidationPipe) dto: CheckExistingAssetsDto, @Body(ValidationPipe) dto: CheckExistingAssetsDto,
@ -308,7 +312,7 @@ export class AssetController {
* Checks if assets exist by checksums * Checks if assets exist by checksums
*/ */
@Post('/bulk-upload-check') @Post('/bulk-upload-check')
@HttpCode(200) @HttpCode(HttpStatus.OK)
bulkUploadCheck( bulkUploadCheck(
@AuthUser() authUser: AuthUserDto, @AuthUser() authUser: AuthUserDto,
@Body(ValidationPipe) dto: AssetBulkUploadCheckDto, @Body(ValidationPipe) dto: AssetBulkUploadCheckDto,