OpenAPI와 스웨거를 활용한 실전 API 설계 (요구사항 분석부터 비즈니스 모델 설계, 문서화, 자동화, 테스트, API 확장과 진화까지)

OpenAPI와 스웨거를 활용한 실전 API 설계 (요구사항 분석부터 비즈니스 모델 설계, 문서화, 자동화, 테스트, API 확장과 진화까지)

$35.86
Description
스마트한 개발을 원하는 백엔드 개발자는 물론, 프로젝트 테크니컬 PM과 PO, 프론트엔드 개발자가 모두 함께 읽어야 할 필독서!
요구사항 분석부터 사용자 스토리 작성, 고급 비즈니스 모델 설계, API 설계와 문서화, 자동화, 테스트, API의 확장과 진화까지, API 사용자와 개발자가 애용할 웹 API 설계와 활용에 대한 완벽 가이드!
스프링 부트(Spring Boot) 웹서비스에 스웨거(Swagger)를 입혀 활용하는 방법을 알려주는 한국어판 특별부록도 수록!
저자

조시포널랫,루카스로젠스톡

저자:조시포널랫(JoshPonelat)
스마트베어(SmartBear)의스웨거오픈소스를담당하고있다.API관련마찰을최소화하고팀이더나은도구를만들도록돕는것을목표로한다.조시는지구의남쪽끝에있는남아프리카공화국에거주하는커피애호가이며말장난을즐긴다.어디에서든‘ponelat’이라는계정을사용하며,아마추어지도제작,소형제품제작,고급노트필기법에관심이있다면주저하지말고슬랙이나그밖의온라인포럼에서조시를찾아보자.

저자:루카스로젠스톡(LukasRosenstock)
스타트업과대규모조직을대상으로API라이프사이클관련컨설팅,개발,기술문서작성을지원하는프리랜서기업가다.유럽의중심부인독일에살고있으며,맥주를좋아하지않는이상한독일인이자커피를마시지않는이상한엔지니어다.맥주와커피대신에차를즐겨마신다.API관련일이나코딩으로바쁘지않을때는밤늦게까지보드게임을즐기고효과적인이타주의로더나은세상을만드는방법을고민한다.트위터(@LukasRosenstock)에서루카스를만날수있다.

역자:오명운
번역을통해개발자생태계에조금이라도보탬이되고자인공지능과무모한경쟁을벌이고있는인간지능번역자.『실전스프링부트』(제이펍,2023),『스프링부트실전활용마스터』(책만,2021),『엔터프라이즈데이터플랫폼구축』(책만,2020)등을번역했으며,적은양이라도꾸준히번역작업을이어갈생각이다.github.com/HomoEfficio/dev-tips에잡다한문제해결기록을남기고있으며,현재네이버제트에서글로벌메타버스서비스제페토(Zepeto)를만들고있다.

목차


[1부]OpenAPI형식으로기존제품의API기술해보기

1장API와OpenAPI소개
__1.1API생태계란?
__1.2API기술하기
____1.2.1브리짓의업무
____1.2.2브리짓해법의잠재력
__1.3OpenAPI란?
____1.3.1OpenAPI정의서예제
__1.4OpenAPI정의서는어디에사용하는것이좋을까?
__1.5스웨거란?
__1.6REST란?
__1.7OpenAPI는언제사용하는가?
____1.7.1API사용자
____1.7.2API제공자
____1.7.3API설계자
__1.8이책의구성
__1.9정리

2장API요청준비
__2.1문제정의
____2.1.1직판장API개요
____2.1.2직판장API의처음두가지작업
__2.2포스트맨준비
__2.3직판장API
__2.4후기목록조회
____2.4.1GET요청구성
____2.4.2확인
__2.5후기남기기
____2.5.1POST요청구성
____2.5.2확인
__2.6연습
____2.6.1고양이에관한진실API
____2.6.2미니멀아바타API
____2.6.3덕덕고검색엔진API
____2.6.4해적은어API
__2.7용사를위한HTTP
__2.8정리

3장OpenAPI정의서첫인상
__3.1문제정의
__3.2OpenAPI명세소개
__3.3YAML훑어보기
___3.3.1JSON에서YAML로
__3.4GET연산기술하기
__3.5GET연산확장
__3.6정리

4장스웨거에디터로OpenAPI정의서작성
__4.1스웨거에디터소개
___4.1.1에디터패널
___4.1.2UI문서패널
___4.1.3도구메뉴
___4.1.4저장
__4.2스웨거에디터에서OpenAPI정의서작성
___4.2.1유효한미니OpenAPI정의서
___4.2.2스웨거에디터에서OpenAPI정의서작성
___4.2.3검증
__4.3GET/reviews추가
__4.4API호출
___4.4.1GET/reviews호출
___4.4.2OpenAPI정의서에서버정보추가
___4.4.3GET/reviews다시호출
__4.5정리

5장API응답기술하기
__5.1HTTP응답
__5.2문제정의
__5.3놀라운데이터스키마의세계
__5.4JSON스키마
___5.4.1type필드
___5.4.2객체에필드추가
___5.4.3minimum과maximum
___5.4.4number와integer
__5.5상태코드
__5.6미디어타입(MIME)
__5.7GET/reviews응답기술하기
___5.7.1초미니응답
___5.7.2GET/reviews200응답본문
___5.7.3응답본문에rating필드추가
___5.7.4message,uuid,userId필드추가
__5.8정리

6장자원생성
__6.1문제정의
__6.2POST/reviews와요청본문기술하기
___6.2.1요청본문
___6.2.2requestBody의스키마
__6.3새후기생성
___6.3.1예시추가로try-it-out기능개선
__6.4경로파라미터를포함한GET/reviews/{reviewId}기술하기
___6.4.1경로파라미터
___6.4.2reviewId경로파라미터기술하기
__6.5후기생성확인
__6.6정리

7장인증과인가
__7.1문제정의
__7.2인증준비
___7.2.1도전과제:POST/users기술하기
___7.2.2도전과제:POST/tokens기술하기
___7.2.3해법:정의서내용변경
___7.2.4사용자및토큰생성기능확인
__7.3Authorization헤더추가
___7.3.1OpenAPI의인가처리방식
___7.3.2OpenAPI3.0.x에서지원하는인가(보안)방식
___7.3.3보안스킴에Authorization헤더추가
___7.3.4POST/reviews에보안요구사항추가
___7.3.5보안기능동작확인
__7.4선택적으로보안적용
__7.5다른방식의보안스킴
__7.6보안스킴을적용하는일반적인방법
__7.7정리

8장API문서준비와호스팅
__8.1문제정의
__8.2API정의서에메타데이터추가
__8.3마크다운으로설명작성
___8.3.1마크다운기초
___8.3.2직판장API정의서에마크다운설명추가
__8.4태그로연산그룹짓기
___8.4.1GET/reviews연산에태그추가
___8.4.2태그에설명추가
___8.4.3나머지연산에태그추가
__8.5Netlify.com과스웨거UI로API문서호스팅
___8.5.1OpenAPI정의서로스웨거UI준비
___8.5.2Netlify.com에서호스팅
__8.61부마무리
__8.7정리

[2부]OpenAPI와스웨거를활용한API설계우선방식

9장웹애플리케이션설계
__9.1펫시터아이디어
__9.2펫시터프로젝트착수
___9.2.1추가요구사항
___9.2.2팀구조
___9.2.3API중심아키텍처
___9.2.4계획
__9.3도메인모델링과API
___9.3.1API에사용할도메인모델링
___9.3.2직판장API돌아보기
__9.4펫시터도메인모델
___9.4.1모델에사용되는개념
___9.4.2사용자모델
___9.4.3구인공고와반려견모델
__9.5펫시터사용자스토리
___9.5.1사용자스토리란무엇인가?
___9.5.2사용자스토리수집
___9.5.3사용자스토리매핑
__9.6정리

10장OpenAPI를사용한API설계
__10.1문제
___10.1.1도메인모델을OpenAPI로전환
___10.1.2재사용성보장
__10.2스키마생성
___10.2.1스키마를포함하는OpenAPI파일
___10.2.2공통스키마참조
___10.2.3User스키마
___10.2.4Job스키마
___10.2.5Dog스키마
___10.2.6JobApplication스키마
__10.3API연산과CRUD
___10.3.1API요청과응답정의
___10.3.2사용자스토리와CRUD설계
__10.4펫시터API
___10.4.1User스키마에필요한연산
___10.4.2Job스키마에필요한연산
___10.4.3JobApplication스키마에필요한연산
__10.5정리

11장API설계우선방식에변경워크플로구축
__11.1문제
__11.2변경논의와대응
__11.3워크플로엔진으로서의깃허브
___11.3.1단일진실출처
___11.3.2변경제안
___11.3.3변경수용
___11.3.4변경비교확인
__11.4깃허브워크플로통합
___11.4.1깃허브와진실의출처구성
___11.4.2깃허브워크플로단계
__11.5워크플로실무
___11.5.1DELETE/jobs/{id}추가제안
___11.5.2변경검토및수용
___11.5.3오래된브랜치와최신브랜치비교
___11.5.411장에서수행한내용
__11.6정리

12장프론트엔드코드구현과변경대응
__12.1문제
__12.2프리즘목서버구성
___12.2.1프리즘설치
___12.2.2프리즘동작확인
__12.3목서버를바탕으로프론트엔드개발
___12.3.1OpenAPI정의서에예제추가
___12.3.2프리즘에examples적용
__12.4누락된API연산식별
___12.4.1새연산추가검토
___12.4.2새연산설계
___12.4.3프리즘으로부터반환받을목데이터선정
___12.4.4변경제안
___12.4.5curl예제
__12.5정리

13장Node.js와스웨거코드젠으로백엔드구축
__13.1문제
__13.2스웨거코드젠소개
___13.2.1클라이언트코드생성
___13.2.2서버코드생성
___13.2.3스웨거제너레이터
__13.3백엔드구조
___13.3.1백엔드코드생성
___13.3.2백엔드구조분석
___13.3.3OpenAPI수정내용
__13.4백엔드OpenAPI수정
___13.4.1operationID추가
___13.4.2API연산에태그지정
___13.4.3백엔드스텁재생성
__13.5백엔드코드실행과테스트
___13.5.1포스트맨으로테스트
___13.5.2입력값검증테스트
___13.5.3프리즘으로결괏값검증
__13.6몽구스로데이터베이스저장
___13.6.1API수정
___13.6.2몽고디비사용준비
___13.6.3몽구스설정
___13.6.4모델생성
__13.7API메소드구현
__13.8정리

14장웹애플리케이션통합및출시
__14.1문제
___14.1.1인증
___14.1.2코드조직
___14.1.3백엔드와프론트엔드컴포넌트를함께제공
__14.2인가구현
___14.2.1보안스킴생성
___14.2.2‘Login’행위추가
___14.2.3연산보안정의
__14.3리포지터리관리
___14.3.1기존구조유지
___14.3.2공유깃리포지터리사용
___14.3.3코드와API정의서를하나의리포지터리에통합
___14.3.4결정및리팩터링
__14.4통합웹서버구성
___14.4.1URL설계
___14.4.2서버구성
__14.5정리

[3부]제품출시이후API확장과진화

15장2차API설계
__15.1첫번째개발스프린트검토
__15.2다음스프린트계획
__15.3새기능준비
___15.3.1도메인모델재검토
___15.3.2사용자스토리검토
__15.4개발

출판사 서평

|이책에서다루는내용|
이책은API를기술하고(describe)설계하는(design)방법을다룬다.OpenAPI세상으로인도하는입문서로서,설계우선원칙을실천하는API개발자가사용하는도구와사례를들여다본다.
OpenAPI정의서를읽고쓰는기초부터시작해서도메인설계,워크플로변경,API디자인패턴으로나아간다.OpenAPI와API설계에초점을맞추지만API라이프사이클전반에걸친주제를모두다루려고노력했으며기술관점과프로젝트관리관점을두루살펴볼수있다.
OpenAPI가어떤문제를해결해주는지,왜존재하는지,어떻게사용하는지이해하고자신감을갖는데이책이도움이되었으면한다.

-OpenAPI형식으로기존제품의API를기술해본다
-OpenAPI와스웨거를활용해API설계우선방식(designfirstapproach)을적용해본다
-제품출시이후API확장과진화방법을알아본다
-OpenAPI구문과구조를학습한다
-스웨거를사용해OpenAPI정의서를생성한다
-프로세스를자동화하고코드를자동생성해본다
-기능조직간협업방식을배운다

|이책의대상독자|
API에흥미를갖고설계우선방식으로API를활용해보려는소프트웨어개발자가읽어야하는책이다.프론트엔드또는백엔드개발자,제품관리자,QA테스터,심지어CEO까지API관련의사결정을내려야하는모두가읽어야한다.
특정주제를심도깊이이해하고있지않더라도책을읽을수있도록주의를기울였으며,JSON이나HTTP같은개념에익숙하다면책을읽는데아무런문제가없을것이다.또한간단한복습과외부자료에대한링크도많이담았다.

|이책의구성|
[1부]OpenAPI형식으로기존제품의API를기술해보기
1장:API를기술하는의의와방법
2장:API를탐험하는데사용하는도구인포스트맨(Postman)설명
3장:이미만들어져있는직판장(Farmstall)API를기술하는방법
4장:스웨거에디터사용방법
5장:기본적인API요청과응답기술해보기
6장:요청본문과응답본문다뤄보기
7장:인증과인가알아보기
8장:스웨거UI를사용해API문서를제공하는웹사이트를호스팅하는방법

[2부]백지상태에서OpenAPI와스웨거를활용해API를설계해보기
9장:2부전반에걸쳐다루게될펫시터(PetSitter)프로젝트소개
10장:API를설계하고OpenAPI를사용해API를기술하는과정
11장:API설계변경을처리할수있는깃(Git)기반의워크플로소개
12장:API사용자입장에서API에대한목(mock)을활용하고변경에대응하는방법
13장:스웨거코드젠을사용해API를구현하는방법
14장:API를사용할수있도록준비를마치고프론트엔드와백엔드를통합하는과정

[3부]2부에서작성한API설계를확장하고진화시켜보기
15장:다음단계의API반복(iteration)에대한계획세우기
16장:JSON스키마합성(composition)을사용한도메인모델확장
17장:API에필터링,페이징,정렬기능추가
18장:problem+json응답형식을알아보고API에에러처리적용하기
19장:JSON스키마를확장하고입력값유효성검증적용하기
20장:API버전관리와중대변경(breakingchange)을처리하는방법
21장:API최종출시전체크리스트

[부록]스웨거2.0,OpenAPI3.0,OpenAPI3.1의차이점
[한국어판특별부록]스프링부트웹서비스에스웨거를입혀활용하는방법

[옮긴이의말]

인터넷이세상에나온지그리오래되지않았을때,집밖에나가지않고인터넷만으로얼마나잘지낼수있는지를실험해보는체험예능컨텐츠가있었던걸로기억합니다.하지만이제그런예능은아무도보지않을것같습니다.스마트폰을사용할수있다면누구든인터넷만으로불편없는삶을영위할수있다는사실을누구나알고있으니까요.

이처럼손안에서몇번의스와이프와클릭만으로물건을받아사용할수있고음식을배달받아먹으며,SNS를통해이모든것을자랑까지할수있게된편리한세상을돋보기로계속확대하면서들여다보면그마디마디에API가숨어있음을확인할수있을것입니다.API는다양한소프트웨어의연결점역할을하면서이세상을든든하게떠받치고있습니다.

소프트웨어의연결점역할을하는API는소프트웨어개발자들에게는의사소통수단으로사용됩니다.원활한의사소통을위해서는주고받는데이터형식과호출방식을정의하는규격과그에대한친절한설명을작성해야합니다.즉API를기술해야(describe)합니다.OpenAPI는HTTP프로토콜기반의HTTPAPI를기술하는표준명세이며,표준이있으면자동화가가능해지므로OpenAPI를통해많은작업을자동화할수있습니다.

이책은OpenAPI를사용해서API정의서를기술하는방법을설명합니다.그걸로그쳤다면그다지재미없는책이될수도있었을텐데,작은웹서비스의요구사항을정리하고,사용자스토리를작성하고,이를바탕으로비즈니스도메인모델을설계하고,이를반영한API를설계하고,OpenAPI를사용해서API정의서를작성하고,정의서를바탕으로자동화를이용해개발생산성을높이고,시간이지남에따라API를매끄럽게진화시켜확장하는방법까지그야말로모든것을다루고있습니다.

API를설계하고는있지만어쩌면별다른학습이나기준없이편의성만을생각하며설계하고구현하다가나중에확장하기어렵게되는안타까운일이실무적으로많이발생하는데,이책에나오는모범사례를읽다보면자연스럽게확장성있는API를설계하는데필요한지식을얻을수있습니다.

이런내용만으로도유익할텐데,이모든과정을지루하고딱딱한설명이아니라실제로작은프로젝트팀이구성되고각자의역할을수행하며난관에부딪치고해결하는모습을묘사하는형식으로전개하고있어흥미진진하고재미있기까지합니다.게다가예제를위해간혹특정기술을사용하고있기는하지만본질적으로특정도구에종속되는내용이아니라서,한마디로API를만들고활용하는개발자모두에게재미있고유익한책입니다.

이책의내용이전반적으로OpenAPI를사용해새로운시스템을설계하고만들어가는과정을보여주고있어서이미만들어진시스템에는적용할수없는건가라는의문이들수도있는데,다행스럽게도기존시스템에도적용할방법이있습니다.국내에서API서버개발에가장널리사용되는스프링부트기반의API서버라면아주간단한설정과애너테이션만으로도스웨거UI사이트를자동으로만들수있습니다.단순한예제지만실무적으로꽤큰도움이될것이라생각해서한국어판특별부록으로추가했습니다.

코딩도그렇지만번역도늘볼때마다개선점이눈에보입니다.아마원서를작성한저자들도마찬가지일겁니다.번역자는일차적으로는원서를우리글로옮기는일을하는사람이지만,훌륭한번역자는먼저독자의입장에서원서를읽고불편했던점을찾아개선하고최종독자에게는더나은결과물을보여주는사람이라고생각합니다.이번에도모자람이있겠지만훌륭한번역자흉내라도내보고싶어서원서보다나은역서를목표로번역작업을했습니다.모쪼록독자분들이읽어나가시면서마치애초부터한글로쓰여진책인것처럼술술읽으실수있기를욕심내어바라봅니다.