Rupring v0.8.1 배포
https://github.com/myyrakle/rupring
버그 좀 고치고, 기능 이것저것 추가해서 올렸다.
Swagger 문서화 기능 강화
Swagger 문서화 기능 위주로 그럴듯하게 붙여놨다.
1. Swagger: Request DTO 정의
이제 매크로를 통해서 바로
이런식으로 정의하고
route에 params attribute에 꽂으면
자동으로 문서화가 된다.
중첩 구조체도 되고, 배열도 되고, 기본적인 타입들은 다 되게 해놨다.
2. Swagger Response DTO 적용
Response도 Request와 같은 기전으로 Dto를 정의하고

그걸 response attribute에 꽂으면

문서화가 된다.
3. 인증 플래그 활성화
인증도 auth attribute로 켤 수 있다.

귀찮아서 일단 BearerAuth만 만들어뒀다.
Request bind 기능 구현
RupringDoc을 적용한 구조체는 rupring::Request 기반으로 바로 전체 역직렬화를 할 수 있게끔 만들었다.
저 bind라는 함수를 통해서 Request에 들어있는 정보 기반으로 Request DTO에 값을 바인딩한다.
매크로로 장난질을 해둬서 json body도 되고, path parameter도 되고, query parameter도 된다. 이것들을 한 구조체에 섞어도 된다.
근데 이 기능 자체가 "RupringDoc"을 통해서 생성되는게 좀 묘하긴 하다.
매크로 이름을 다른걸로 바꿔야 하나 고민중이다.
RupringDoc 상세 속성
query를 붙이면 query parameter다.
기본타입과 기본타입의 배열, Option<기본타입> 정도만 기본 지원된다.
path_param을 붙이면 path parameter가 된다.
기본타입과 Option<기본타입> 정도만 자동 변환을 지원한다.
두개다 안붙어있으면 json body parameter로 간주한다.
그 외에 required가 붙어있으면 필수로 처리하고, desc는 설명, example을 예제값이다.
name은 실제 들어오는 필드의 이름을 구조체 필드명과 별개로 커스텀하고,
ignore는 그냥 역직렬화/문서화 대상에서 제외한다. (이 경우 Default::default()를 박는다.)
아직도 만들게 많다.