twinings
85
2021-01-25 16:44:09
9
809

이게 코드 스타일이 다른건지 옛날식인지 궁금하네요




예를들어

코드 리스트 API 결과값과 요청값을

배열이 아닌 스트링 code_list : "1,2,3,4,5" 이런 방식으로 준다던가

검색어 보낼때 화면에서 검색어 앞뒤로 % 붙여달라던가

리스트 데이터의 디테일 정보(단건)를 표출하는데 api를 2~3개 써서 조합해서 보여주라고 한다던가 

저장도 그에 따라 2~3개 .. 


항상 백엔드하다 요번에 API 받아하는데 낯서네요


0
  • 댓글 9

  • 훈마로
    695
    2021-01-25 17:07:41

    사실 프로그래밍 세계에는 정답은 없습니다.

    최선의 방법, Best Practice 등은 있겠지요.


    첫번째 경우는 그냥 그 API 설계 당시에 그렇게 응답을 보내주겠다고 설계가 된 것 같네요. (어떤 이유인지는 개발한 사람만 압니다.)

    개인적으로는 배열은 배열로 보내주는게 좋아보이긴 합니다.


    써드 파티 이용하실 때는 그렇구나..하고 넘어가시면 됩니다. 너무 신경 쓰시면 정신 건강에 안 좋아요.

    (오픈 소스라면 PR한번 날려보시면 좋겠네요)


    두번째 경우는, 검색어 LIKE 검색을 위해 %를 붙여달라고 하는 것 같네요.

    쿼리단에서 LIKE 검색시 %%를 안 붙이고 파라미터 그대로 LIKE에 넣었나 봅니다.


    세번째 경우는, 단일 리소스에 대한 처리라면 그럴 수 있습니다.

    예를 들면, 회원의 주문 정보를 조회한다고 했을 때

    회원 / 주문 정보 / 상품 정보 / 배송 정보 모두 단일 리소스로 처리해서 각 API를 호출해야겠죠.

    클라이언트에서 그 API를 받아 화면에서 필요한 내용을 채워주시면 됩니다.

  • 돈까스
    5k
    2021-01-25 21:49:13 작성 2021-01-25 21:49:46 수정됨

    일단 최신식은 아니니까 옛날식이겠죠.

    전체적으로 없어보이는 API네요.


    첫번째, 요청값은 GET 으로 url에 파라미터를 보내려고 하다보면 그럴 수 있으나 결과값을 그렇게 준다는 것은 별로라고 보여지네요.


    두번째, 검색어를 보낼떼 SQL 문장을 만들 것을 고려해서 %를 붙힌다면, 역할 분리가 잘 안되었다고 보여지네요.

     

    세번째, 서버쪽 코드나 DB 설계등을 알지 못해서 단정짓기는 힘들 것 같습니다만, 가끔 보면 서버쪽 API 정리하기 귀찮아서 그런식으로 하는 경우가 있어요. 항상 2~3개의 API가 호출해야 하는 상황이면, 더 많은 정보를 알고 있는 서버측에서 데이터를 한번에 가공해서 주는 것이 좋죠... 개별적인 API 호출에 대한 정합성 검증을 한다거나 하는 것도 비용이 많이 드는데요...


    아무튼 신식 방식도 아니고, 좋은 방식도 아니고, 어쩔 수 없거나 귀찮아서 그렇게 된 상태라고 보입니다.

  • Dive_Drink_Develope
    5k
    2021-01-26 10:31:56

    배열을 배열로 준다는건 무슨뜻일까요..ㅎㅎㅎ

    결과값을 JSON타입으로 주길 바란다는 뜻인가..

    여튼 돈까스님 의견에 127% 동의합니다.

  • 돈까스
    5k
    2021-01-26 13:37:52 작성 2021-01-26 13:38:32 수정됨

    "code_list":[1,2,3,4,5]

    라고 해야 하는데, 그게 아니고

    "code_list":"1,2,3,4,5"

    라는 것 같은데요. 


    저걸 사용하려면 , 구분자로 값들을 분리해야 하잖아요.


    글쓴분이 언급하신 두번째 케이스를 보니 경우에 따라서는 저렇게 달라고 하는 이유 하나가 생각하네요.


    code_list in (${code_list}) -> code_list in (1,2,3,4,5)


    이렇게 쓰려고 하는건 아닌지...

    서버측에서 오류검증도 안하고 그냥 ui에서 다 만들어준 그대로 sql까지 꽂아버리는 경우도 있습니다.

    똥내나는 서버 코드...


  • Dive_Drink_Develope
    5k
    2021-01-26 13:45:12

    돈까스 배열은 데이터 구조 구요. 말씀하신건  JSON포맷의 배열형식 문자열이죠. :)

    어차피 문자열로 오는건 같고 JSON라이브러리가 배열이고 5개원소임을 파싱해서 처리해줄뿐..


    그냥 배열은 배열로 줘야한다. 라는게 부정확한 표현이라고 궁시렁 댄거에요..ㅎㅎ


  • 돈까스
    5k
    2021-01-26 13:58:52

    음. 배열을 배열로 하라는 말은 몇가지를 생략해서 쓰신 말이겠죠. :)

    (자료 구조) 배열이면, (JSON 형식/PARAM 형식) 배열로 보내주는 것이 좋다고 생각한다.


    아마 글쓴분이나 이런 비슷한 일을 많이 경험하고 고민한 사람들은 생략한 내용을 안보고도 이해하셨을 겁니다. 

    생략된 부분을 다 언급해서 쓰면 저같이 TMI를 쓰는 재미없는 글을 쓰게 됩니다. :)


  • Dive_Drink_Develope
    5k
    2021-01-26 15:49:35

    돈까스  네. 정확한 표현을 써야한다고 생각해서 토를 달았습니다. 댓글을 의문형으로 써서 제가 이해를 못했다고 생각하신것같은데..ㅎㅎ 좀 부드럽게 표현해보려고 한거에요 :)



  • 돈까스
    5k
    2021-01-26 16:32:08

    함축적이고 시적인 표현을 쓰고 싶으셨던 것 같아요.

    그런 표현을 써가면서 대화가 이어지면 재밌거든요.


    불특정한 다수가 보는 게시판에서는 힘들긴 한것 같습니다.

    저도 정확하게 글을 쓰기 위해 무지 많이 수정합니다.

    혹시라도 다른 뉘앙스로 읽히지 않을까하고

    굉장히 피곤하고 재미없죠.


    글 한번 딱 쓰고 추가 댓글도 안쓰고 안 고치시는 분을이 멋있는 것 같네요.

  • SimonTR
    29
    2021-01-29 15:29:17

    그..냥 날림 코드 같습니다..ㅎㅎ..

  • 로그인을 하시면 댓글을 등록할 수 있습니다.