[猫と一緒に本を読む]2022.02.15 TIL


現状
書評の修正情報が正しくサーバーに入っているかどうかを確認する時間があります.しかし、不思議なことに、データにはnull値が常に発生し、エラーが発生します.どの部分で問題が発生しているかを確認するために、Kakaapiを介してデータを受信するプロセスから、一歩一歩確認します.この過程で、ついに間違いの原因を見つけた.これはisbnを介してココアapiを導入する過程で発生した.
質問する
実際,本のtitleとauthorでkakaapiをロードすると,データ出力が良好である.
//카카오 api 가져오기 
    async function booksdata(title, author) {
        const params = {
            target: 'title' & 'person',
            query: title, author,
            size: 1,
    };
    const {data: {documents}} = await ResultApi(params); console.log(documents);
    setDatas(documents[0])
} 

    useEffect(() => {
       booksdata(bookvalue[0].bookTitle, bookvalue[0].bookAuthors)
    },[])
しかし、isbnでロードすると問題が発生します.
async function booksdata(isbn) {
        const params = {
            target: 'isbn',
            query: isbn,
            size: 1,
    };
    const {data: {documents}} = await ResultApi(params); console.log(documents); 
    setDatas(documents[0])
    } 

 useEffect(()=>{
        booksdata(reviewvalue[0].bookId) //isbn => bookId //
    },[])
だからKakaapiの公式文書を調べました.
整理するには,検索する本の中のisbnが10ビットisbn 10または13ビットisbn 13を提供し,両者を同時に提供する場合もある.
isbnをapiとしてデータを受信すると、「8950973022978895073025」という形で受信しますが、isbnでapiを要求すると、低値でqueryに入れても値が見つからないという問題があります.
解決策
isbn 10またはisbn 13を提供する場合、または両方を提供する場合、kakaapiをロードする場合は、次の2つに分けられます.
async function booksdata(isbn10, isbn13) {
        const params = {
            target: 'isbn',
            query: isbn10 || isbn13,
            size: 1,
    };
    const {data: {documents}} = await ResultApi(params); console.log(documents); 
    setDatas(documents[0])
    } 

 useEffect(()=>{
        if (reviewbid.indexOf(' ') !== -1){ //isbn10과 isbn13이 동시에 주어진 경우
        const isbn10 = reviewbid.slice(0,10)
        const isbn13 = reviewbid.slice(11)
        booksdata(isbn10, isbn13)
    } else {
        booksdata(reviewbid) //둘 중 하나만 주어진 경우
    }
    },[])
このようにisbnを用いてkakaapiにより書籍情報のロードに成功した.