Serverless Framework에서 임의의 상태 코드를 반환하는 API 만들기
정식 문서를 보면 매우 빠르다.
람다에 JSON
{ statusCode: 404, body: "msg" }
에 답장하면 된다는 것이다.※ 람바다 대리합병
integration: lambda
이 아니면 귀찮아 추천하지 않습니다.※ 람바다 대리 합병
integration: lambda_proxy
은 기본값, 생략 가능※ HTTP 상태 코드는 HTTP 응답 상태 코드 - HTTP | MDN 참조.
Serverless Framework의 프로그램 설계
다음 서버less입니다.yml과 hanlder.py
sls deploy --aws-profile <your_profile>
를 준비하면 티팟이 될 수 있다.혹은 가벼운 마음으로 컨디션 코드를 조사했더니 모르는 컨디션 코드가 대거 나타나 급하다.
curl -i -X GET https://your_apigw_id.execute-api.ap-northeast-1.amazonaws.com/dev/status?c
ode=418
HTTP/2 418
content-type: application/json
content-length: 13
date: Sun, 26 Sep 2021 11:08:53 GMT
x-amzn-requestid: aec3359e-5e8b-4358-bbcf-XXXXXXXXXXX2
x-amz-apigw-id: GRIu6FgttjMFUAA=
x-amzn-trace-id: Root=1-615054c5-48d2867864cfe4de591XXXXX;Sampled=0
x-cache: Error from cloudfront
via: 1.1 1e25bd98fa0bda7498f5119d7dcXXXXX.cloudfront.net (CloudFront)
x-amz-cf-pop: NRT51-C3
x-amz-cf-id: WEG7QPCeJnqVv_RLjbJjmdbIvbL--xGu0XsMBH8N1QjZYpNKXXXXXA==
I'm a teapot
serverless.yml
service: api-response-codes
provider:
name: aws
runtime: python3.9
region: ap-northeast-1
lambdaHashingVersion: "20201221"
stage: dev
package:
patterns:
- "!**"
- handler.py
functions:
handler:
handler: handler.lambda_handler
events:
- http:
method: get
path: /status
handler.py
def lambda_handler(event, context):
try:
code = int(event.get("queryStringParameters", {}).get("code"))
except:
code = 200
# see https://developer.mozilla.org/ja/docs/Web/HTTP/Status
msg = {
100: "Continue",
101: "Switching Protocol",
102: "Processing",
103: "Early Hints",
200: "OK",
201: "Created",
202: "Accepted",
203: "Non-Authoritative Information",
204: "No Content",
205: "Reset Content",
206: "Partial Content",
207: "Multi-Status",
208: "Already Reported",
226: "IM Used",
300: "Multiple Choice",
301: "Moved Permanently",
302: "Found",
303: "See Other",
304: "Not Modified",
305: "Use Proxy",
306: "unused",
307: "Temporary Redirect",
308: "Permanent Redirect",
400: "Bad Request",
401: "Unauthorized",
402: "Payment Required",
403: "Forbidden",
404: "Not Found",
405: "Method Not Allowed",
406: "Not Acceptable",
407: "Proxy Authentication Required",
408: "Request Timeout",
409: "Conflict",
410: "Gone",
411: "Length Required",
412: "Precondition Failed",
413: "Payload Too Large",
414: "URI Too Long",
415: "Unsupported Media Type",
416: "Range Not Satisfiable",
417: "Expectation Failed",
418: "I'm a teapot",
421: "Misdirected Request",
422: "Unprocessable Entity",
423: "Locked",
424: "Failed Dependency",
425: "Too Early",
426: "Upgrade Required",
428: "Precondition Required",
429: "Too Many Requests",
431: "Request Header Fields Too Large",
451: "Unavailable For Legal Reasons",
500: "Internal Server Error",
501: "Not Implemented",
502: "Bad Gateway",
503: "Service Unavailable",
504: "Gateway Timeout",
505: "HTTP Version Not Supported",
506: "Variant Also Negotiates",
507: "Insufficient Storage",
508: "Loop Detected",
510: "Not Extended",
511: "Network Authentication Required",
}.get(code, "Hello Unknown StatusCode!")
return dict(
statusCode=code,
body=f"{msg}\n",
)
Reference
이 문제에 관하여(Serverless Framework에서 임의의 상태 코드를 반환하는 API 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/toruuetani/articles/a6c908a1bf65f8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)