2017-04-17 11 views
0

Servant provides a way에서 끝점 설명을 생성하여 API 정의에서 설명서를 생성합니다. 그러나 각 엔드 포인트의 기능을 (비공식적으로) 문서화 할 방법이 없습니다. 위의 링크에 사용되는 예를 들어, 생성 된 문서에는 다음이 포함Servant

위의 예에서
## Welcome 

This is our super webservice's API. 

Enjoy! 

## GET /hello 

#### GET Parameters: 

- name 
    - **Values**: *Alp, John Doe, ...* 
    - **Description**: Name of the person to say hello to. 


#### Response: 

가, 내가 무엇을 그리워하는 것은 GET /hello 엔드 포인트는 이것이다, 내가하고 싶은 무엇을 문서화하는 방법입니다 각 엔드 포인트에 대한 비공식적 인 설명으로 API 문서를 보강하는 방법.

## Welcome 

This is our super webservice's API. 

Enjoy! 

## GET /hello 

Send a hello message to the given user. /<-- My description.../ 

#### GET Parameters: 

- name 
    - **Values**: *Alp, John Doe, ...* 
    - **Description**: Name of the person to say hello to. 


#### Response: 

내 생각 엔이 유일하게 내가 아는 한 종에서 지원하지 않는 무언가를 식별하기 위해 다른 엔드 포인트에 태그를 필요로한다는 것입니다. 그러나, 나는 현재 사용 가능한 무엇이 문제를 해결하는 방법을 궁금하네요.

+0

설명서 도구를 간략히 살펴 보았습니다. 실시간 투자를 정당화 할 정도로 유용하지 않았기 때문에 고정 페이지를 호스팅하고 손으로 직접 만들고 API로 최신 상태를 유지했습니다. 필자의 경우 API가 거의 변하지 않을 것입니다 (1 년에 1 번 정도 변경 될 수 있습니다). –

답변

3

Servant.Docs 모듈이 servant-docs (here) 인 것을 찾고 있습니다.

docsWith :: HasDocs api => DocOptions -> [DocIntro] -> ExtraInfo api -> Proxy api -> API 

내가 docsWith의 요점은 당신, 당신은 여분의 엔드 포인트 문서를 제공 할 수 있도록하는 것입니다 믿습니다 : 당신이 docsWith 기능을 사용하는 경우

, 당신은 문서화 된 API에 대한 ExtraInfo 객체를 제공 할 수 있습니다 묻고있어. ExtraInfo에 대해 Monoid 인스턴스가 있으므로 API의 각 끝점에 대해 개별 ExtraInfo 개체를 만든 다음 mappend 개체를 함께 구성하여 docsWith에 전달하는 것처럼 보입니다.

extraInfo :: (IsIn endpoint api, HasLink endpoint, HasDocs endpoint) => Proxy endpoint -> Action -> ExtraInfo api 

문서 (위 링크) 하나가 extraInfo 기능을 사용하는 방법에 대한 갈 것입니다 방법의 예를 가지고 : ExtraInfo를 구축하기

extraInfo 기능을 사용하십시오.

+0

팁 덕택에 커스텀'노트'를 추가 할 수있었습니다. 그것은 필자가 원했던 것과는 다른 노트를 추가하는 것이 새로운 섹션을 추가한다는 점에서 다르지만 아무것도 아닌 것보다 낫다. 이제는 생성 된 Swagger 문서에서이 작업을 수행하려고 시도하지만, 이는 또 다른 이야기입니다. –