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()를 박는다.)


아직도 만들게 많다.