개발/백앤드
[Backend]API 정의서 만들기
ForrestPark
2024. 12. 21. 16:16
📌 본 포스팅은 API 정의서에 대한 내용을 다룹니다.
📌 [카카오 엔터프라이즈 테크 문서 API 톺아보기](https://tech.kakaoenterprise.com/127)
1. API 정의
API(Application Programming Interface) : 서버 클라이언트 간 데이터 매개체
2. API 문서 구성
1. 간략한 소개 및 사전작업 설명
간략한 소개, 개발배경, 비즈니스 목적과 api 의 장점, 외부 독자 타겟 테크니컬 라이팅
api 사용에 앞서 보통 계정을 등록하거나 api key 등록과 인증하는등의 사전 작업이 필요하마.
Web api 사용해서 bot 생성할 뗴 자동으로 부여받은 인증키로 bot 에서 받은 요청인지 인증및 권한 검사 작업.
2. api 사용 시퀀스 (넘버링), 순서 가이드
: ex) 봇 생성 시퀀스 : 사전작업 -> 특정 멤버 조회 -> 채팅방 생성 -> 메세지 전송
만약 시퀀스가 명시되지 않으면 순서에 맞지않게 api 를 호출해서 원하는 결과가 나오지 않을 수 있음.
3. API 레퍼런스
api 별 요청-응답방식, 요청 파라미터 유형, 파라미터 필수여부를 정리해 놓은 문서
3.1 요청(Request)
특정 항목 일정 포멧에 따라 호출. Request syntax, Request header, Request element 로 구분.
- 어떤 요청 방식 인지
- 요청이 실행 되는 곳
- 요청을 하기 위한 인증방식
- 어디로 전송할 것인지
- 전송할 메세지 내용
- 글자수 제한
- 전송 형태
- 요청 테스트 가능 여부
request syntax : api 형태, 구조에 대한 정의
- 어떤 메서드 사용하는지
- 요청 url 의 형태
- 코드 예제 제공 .
코드 예제 | message.send Request syntax
curl -X POST https://api.kakaowork.com/v1/message.send\
-H "Authorization:Bearer{YOUR_APP_KEY}"\
-H "Content-Type:application/json"\
-d '{"conversation_id":"{메세지를 보낼 채팅방 ID}", "text":"Hello"}
3.2 Request Header
- 요청에 대한 추가 정보.
ex) 메세지 총길이(Content-Length), 형식(Content-Type)등
Request, Response 형식 ex) application/json , application/x-www.form-urlencode 등.
header | 설명 |
---|---|
host | 요청이 전송되는 url |
User-Agent | 요청을 보내는 클라이언트에 대한정보 ( ex.웹 브라우저 정보) |
Content-Type | 요청이 보내지는 메세지 타입 ( ex. application/json) |
Content-Length | 요청하는 메세지의 길이 |
3.3 Request Element
- 해당 요청의 실제 메세지, 내용
- 파라미터와 파라미터의 유형, 필수 여부와 설명, 제약 사항 제공
- 4. 응답
- 4.1 Response Element
- api 요청에 대한 결과 값 확인 .
- 요청한 메서드에 따라 응답 형태 달라짐. POAR 와 같이 Body에 실어 보낼때 해당 값이 잘 저장 되었는지 .
전달 되었는지 나타내는 성공여부
GET 과 같이 특정 정보 조회하거나 받아올떄 값들을 코드로 확인하거나 자동적 다운로드
Response element 에 필드, 필드 유형 , 필수 여부와 설명이 제공
ex. 개발자가 고객의 메일주소 가져오려면 메일주소의 필드명을 알아야함.
4. API 리스트 업
예시
api 종류 | api 명 | 설명 |
---|---|---|
Users | users.info | 특정 멤버의 상세 정보 획득 |
users.find_by_mail | 이메일 주소로 워크스페이스 멤버의 정보 획득 | |
users.find_by_phone_number | 전화번호로 | |
users.list | 워크스페이스 멤버 목록 획득 | |
users.set_work_time | 특정 멤버 근무시간 갱신 | |
users.set_vacation_time | 특정 멤버 휴가 시간 갱신 | |
Conversations | conversations.open | 봇과 멤버간 채팅 생성 |
conversations.list | 봇이 생성한 채팅방 조회 | |
conversations.users | 봇이 생성한 채팅방 사용자 리스트 조회 | |
conversations.invite | 봇이 생성한 채팅방에 초대 | |
conversations.kick | 내보내기 | |
messages | messages.send | 채팅 메시지 전송 |
Reactive | submit_action | 사용자 정보와 메세지의 정보를 고객사 서버로 전달. |
request_modal | modal 구성하는 json 받음 | |
submit_modal | 사용자 입력 정보 고객사 서버에 최종 전달 | |
Departments | departments.list | 전체 부서 목록, 상세 정보조회 |
Spaces | sapces.info | 워크스페이스 정보조히 |
Bots | bots.info | 봇 정보 조회 |
6. 시각적 ui 활용
- 테이블 계층화, 코드블럭 등 시각적 요소 활용하여 직관적 글작성
파라미터(파라미터 이름, 타입, 필수여부, 설명 ) 글보다 테이블화해서 설명 - 코드 블럭 활용
- 지속적인 업데이트 필요