본문 바로가기
걸어서 개발 속으로

ChatGPT에게 물어본 api 파라미터 처리 과정

by 손건호 2023. 2. 10.

 

 

 

 

웹서버의 프론트를 만들고 있다

프론트에는 UI와 백엔드에 데이터 요청에 대한 부분이 함께 작성 되는데

/docUpdate 요청에 필요한 파라미터가 무엇인지는 알지만

프론트 문법에 맞게 파라미터를 포함하여 요청시키는것에

어려움이 있었다

 

해당 액션은 thymeleaf 탬플릿 엔진 의 문법을 사용하여 요청하고 있다

https://www.thymeleaf.org/

 

Thymeleaf

Integrations galore Eclipse, IntelliJ IDEA, Spring, Play, even the up-and-coming Model-View-Controller API for Java EE 8. Write Thymeleaf in your favourite tools, using your favourite web-development framework. Check out our Ecosystem to see more integrati

www.thymeleaf.org

프론트 문법에 익숙하지않아서 구현에 오랜시간을 보냈다

 

action docUpdate에는

doc_idx, doc_name, doc_sub, doc_cont

가 필요한데

요청 에러에는 doc_sub와 doc_cont 파라미터만 정상적으로 받아와지고

dic_idx, doc_name 누락 되었다

 

4개의 파라미터중 2개가 요청에 포함성공, 2개가 미포함 이라면

요청에 포함시키지 못한 파라미터2개의 형식을

포함된 파라미터의 형식대로 작성한다면

정상적인 요청이 가능할것이다

하지만 idx파라미터의 경우 input으로 작성하기 부적절한 데이터로

사용자가 수정한다거나 하면 안되는것이다

 

문제를 ChatGPT에게 물어보았다

ChatGPT의 답변중

번호와 이름에 대한 정보는 다른부분에서 처리 되어야 합니다

서버측에서 값을 가져와야 할수도 있습니다

라는 답변은 프론트에서 넘겨주지말고

백엔드 컨트롤러에서 데이터를 넘겨주자는 것인데

프론트에서 수정이 될일도 없고해서 컨트롤러에서 넘겨줘도 되는건 맞다

상당히 대충 물어봐서 재대로 된 답변을 기대할수 없는 질문이었지만

상당히 정확한 대답이었다

하지만 doc이라는 데이터를 분별할수있는기준은 doc_idx인데

그idx를 프론트에서 가지고 있다가 수정되는 데이터와 같이 백엔드에 넘겨 주어야

docUpdate기능이 수행될때 착오가 없다고 생각했다

 

쉽게 설명하면 '1번 문서의 내용을 수정 해주세요~' 요정에 1번 이라는 데이터가 함께 포함 되어있어야

혼동없는 요청이 가능하다는 것이다

doc_idx 를 요청파라미터에 포함시킬수 있다면

doc_name은 ChatGPT의 답변대로 백엔드에서 넘겨주어도 무관하다

 

하지만 dic_idx를 포함시키지못하는 원인을 알기만 하면

doc_name에 대한 문제도 해결되기때문에

조금은 아쉬운 답변이라고 생각했다

그래서 doc_idx를 포함하여 요청할수있는 방법을 알려주도록 유도하여 질문했다

ChatGPT는 doc_idx의 태그를 input으로 설정후 웹 페이지에서 hidden 속성으로 숨기라는 꼼수를 부렸다

왜 굳이 input을 사용 했을까?

 

첫번째로 질문에 포함된 코드에 input이 사용 되었기때문에,

 

두번째로는 input은 html태그로 웹 페이지에 입력칸을 나타내지만

ChatGPT가 input이라는 태그이름을 해석해서 서버에 요청하는 명령어로 판단했기떄문에,

 

input 태그를 사용하라고 한것이 아닐까 라고 생각한다

 

input을 사용해도 hidden으로 사용자에게 보여지지않는다면

괜찮은 방법이기때문에 이방법을 사용했다

 

 

결국 input태그를 사용했지만 hidden으로 숨기는 단계를 거친 방법으로 매개변수를 받아올수 있었다

댓글