๐Ÿ“• Language/Vue

[vuejs] axios get/post ์š”์ฒญ์— ๋”ฐ๋ฅธ param ํ˜•์‹

a n u e 2023. 1. 18. 16:27

๋งˆ์Šคํ„ฐ ํ…Œ์ด๋ธ”์—์„œ A, B, C ๋ฐ์ดํ„ฐ 3๊ฐœ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฒ€์ƒ‰๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค.

 

์šฐ์„ , ํ”„๋ก ํŠธ์ชฝ์—์„œ ๋‹จ์ˆœ String ๊ฐ’์ด ์•„๋‹Œ, Bodyํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ณ  ์‹ถ์–ด์„œ ๋ฐฑ์—”๋“œ์—์„œ PostMapping์„ ์ด์šฉํ•˜์—ฌ ์กฐํšŒ API๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค.

(์ฐธ๊ณ ๋กœ GetMapping์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด Body๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋„ ํฌ์ŠคํŠธ๋งจ์—์„œ๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์ง€ ์•Š๋Š”๋‹ค. ํ”„๋ก ํŠธ์— ๊ฐ–๋‹ค ๋ถ™์ด๋ฉด ๋‹น์—ฐํžˆ ์˜ค๋ฅ˜๊ฐ€ ๋‚จ

axios๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ํ†ต์‹  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ๋Š” GET & BODY ์กฐํ•ฉ์ด ๊ฐ€๋Šฅํ•œ ๊ฒŒ ์žˆ์–ด์„œ ๊ทธ๋ ‡๋‹ค๊ณ  ํ•œ๋‹ค.)

 

์—ฌํŠผ ์–ผ๋ ˆ๋ฒŒ๋ ˆ ๋งŒ๋“ค์—ˆ์Œ

ํ”„๋ก ํŠธ์— ๋ถ™์ผ ๋•Œ, ์ฃผ์˜ํ•ด์•ผํ•  ๊ฒƒ์ด ๋ฐ”๋กœ param

 

get / postํ˜•์‹์œผ๋กœ ๋ณด๋‚ผ ๋•Œ ์•ฝ๊ฐ„์˜ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

 

 

< get >

  const { data } = await axios.get(process.env.VUE_APP_URL + '/api/ea/TbDdsM01/search', {
    params: {
      filter1: filters.clientNm,
      filter2: filters.cstNm,
      filter3: filters.cstCd,
    },
  });
์š”์ฒญ URL
http://localhost:8170/api/ea/TbDdsM01/search?filter1=&filter2=&filter3=1

 

get์€ params์ด๋ผ๋Š” ์ด๋ฆ„์˜ ๊ฐ์ฒด ์•ˆ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„ ๋ณด๋‚ด์•ผํ•œ๋‹ค. ๋ฐ”๋กœ ๊ฐ์ฒด๋ฅผ ๋ณด๋‚ด๋ฉด request body๋ผ๊ณ  ์ธ์‹์„ ํ•˜์—ฌ ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค.

get์ด๋ฏ€๋กœ ์ฟผ๋ฆฌ๋ฌธ์ž์—ด ํ˜•์‹์œผ๋กœ ์š”์ฒญ URL์ด ํ˜•์„ฑ๋œ๋‹ค. 

์„œ๋ฒ„์—์„œ๋Š” ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ request query๋กœ ๋ฐ›๋Š”๋‹ค.

 

 

 

 


< post >

const searchData = async () => {
      const params = {
        filter1: filters.clientNm,
        filter2: filters.cstNm,
        filter3: filters.cstCd,
      };
      const { data } = await axios.post(process.env.VUE_APP_URL + '/api/ea/TbDdsM01/search', params);
      state.table.data = data;
    };
์š”์ฒญ URL
http://localhost:8170/api/ea/TbDdsM01/search

 

 

๊ฐ™์€ ๋“ฏ ๋‹ค๋ฅธ ๋“ฏ .. get์€ params์œผ๋กœ ํ•œ๋ฒˆ ๊ฐ์‹ธ์„œ ๋ณด๋‚ด๊ณ  post๋Š” ๊ทธ๋ƒฅ ๋ณด๋‚ด๋„ค .. ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. (๋)

 


์ถ”๊ฐ€

 get ํ˜•์‹์—์„œ, ์ค‘์ฒฉ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ณ  ์‹ถ์„๋•Œ์—” ์–ด๋–ป๊ฒŒ ํ• ๊นŒ

 

Axios์—์„œ๋Š” ์ด์™€ ๊ฐ™์€ ์ƒํ™ฉ์„ ์œ„ํ•ด paramsSerializer ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ ์˜ˆ์˜๊ฒŒ ์ง๋ ฌํ™”์‹œ์ผœ์ฃผ๋Š” ... ์–ด์ฉŒ๊ณ  (์Šฌ์Šฌ ์“ฐ๊ธฐ ๊ท€์ฐฎ์Œ

 

์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐฐ์—ด์„ param์œผ๋กœ ๋ณด๋‚ด๊ณ  ์‹ถ์„๋•Œ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ํ•˜๋ฉด ๋œ๋‹ค.

const searchData = async (arr) => {
      const { data } = await axios.post(process.env.VUE_APP_URL + '/api/ea/TbDdsM01/search', {
        params : arr
      },
      paramsSerializer : params => {
         return qs.stringify(params, {arrayFormat: 'brackets'});
      }
      state.table.data = data;
 };

๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ ์˜ˆ์˜๊ฒŒ ์ •๋ฆฌ๋œ ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง URL์ด ํƒ„์ƒํ•œ๋‹ค.

http://localhost:8170/api/ea/TbDdsM01/search?arr[0]=apple&arr[1]=banana

์„œ๋ฒ„์—์„œ ๋ฐ›์„๋•Œ์—๋Š” ๊ผญ @RequestParam์„ ๋ฐฐ์—ด๋กœ ๋ฐ›๋„๋ก ์ฒ˜๋ฆฌํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.

@GetMapping("/search")
public ResponseEntity<List<Post>> selectSearchTbDdsM01(@RequestParam(value="arr[]") String[] arrList)

 

ํ•˜์ง€๋งŒ, ์ด๋ ‡๊ฒŒ ์š”์ฒญ ์‹œ ๊ณ„์† ์˜ต์…˜์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๋Š” ๊ฒƒ์€ ๊ท€์ฐฎ๊ธฐ ๋•Œ๋ฌธ์—

Axios ์ธ์Šคํ„ด์Šค๋ฅผ ์ •์˜ํ•˜๋Š” ๊ณณ์—์„œ ๋””ํดํŠธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

const instance = axios.create({
    baseURL: process.env.VUE_IP,
    headers: {
        'Content-Type': 'application/json',
        "Authorization": ''
    },
    paramSerializer : (params) => {
    	return qa.stringify(params, {arrayFormat : 'brackets'});
    }
});

 

์ง„์งœ ๋!