곡곡λ°μ΄ν°ν¬νΈ μ€ν APIλ μΉ κ°λ°μλ₯Ό κ΄΄λ‘ν (Feat. XML)
곡곡λ°μ΄ν°ν¬νΈμ μ€ν APIλ λ§μ μΉ μλΉμ€λ μμ€ν μμ νμ©ν μ μλ λ°μ΄ν°λ₯Ό μ 곡νκ³ μμ΄μ μΉ κ°λ°μλ€μκ² νμμ μΌλ‘ μ°λμ μꡬνλ μΈν°νμ΄μ€μ΄λ€. λ§μ κΈ°μ μμ μ€ν APIλ₯Ό νμ©ν΄μΌνκΈ° λλ¬Έμ μ λ§μ μΉ κ°λ°μκ° μ€ν APIμ λν μ°λ μ€λ₯ λλ¬Έμ νλ€μ΄νλ€. μ§κΈμ μΈμ¦ν€ λ¬Έμ λ₯Ό ν΄κ²°νκ³ μ URL μΈμ½λ©λ ν€μ μλ³Έμ ꡬλ³ν΄μ μ 곡νκΈ° λλ¬Έμ OpenAPI νμ© μ체λ μ΄λ €μμ΄ μλ€κ³ μκ°μ΄ λλ€. λ§μ½, μ€νλ§ νλ μμν¬λ₯Ό μ¬μ©νκ³ μλ κ°λ°μλΌλ©΄ μΈμ½λ©λμ§ μμ μΈμ¦ν€(Decoding)μ 볡μ¬νμ¬ μ¬μ©νλ©΄ λλ€.
νμ§λ§, 곡곡λ°μ΄ν°ν¬νΈμ μ€ν APIκ° μΉ κ°λ°μλ€μ κ΄΄λ‘νλ λ¬Έμ λ μκ°λ³΄λ€ λ§μλ° ν¨κ» μμ보λλ‘ νμ.
κ°νμ SERVICE_KEY_IS_NOT_REGISTERED_ERROR μ€λ₯
곡곡λ°μ΄ν° ν¬νΈμ μμ£Όνλ μ§λ¬Έ μ€ μλΉμ€ μ€λ₯μ λν λ΄μ©μΌλ‘ SERVICE_KEY_IS_NOT_REGISTERED_ERROR
μ€λ₯μ λν μμΈμ κ°λ¨νκ² μκ°νκ³ μλ€. μλͺ»λ μΈμ¦ν€λ₯Ό λ£μ΄μ νΈμΆνμκ±°λ μΈμ¦ κΈ°κ΄ μλ²λ‘ λκΈ°νλμ§ μμμ λ°μνλ€κ³ λμ΄μλ€. ν΄λΉ μΈμ¦ν€λ₯Ό μ¬μ©νμ¬ μ μμ μΌλ‘ OpenAPIλ₯Ό νΈμΆν μ μμμμλ λΆκ΅¬νκ³ λͺ μ΄ λ§μ μΈμ¦ν€κ° μ¬λ°λ₯΄μ§ μλ€λ μ€λ₯κ° κ°νμ μΌλ‘ λ°μνκΈ°λ νλ€.
ν΅μΌλμ§ μμ μ€ν API μ°Έκ³ λ¬Έμ
μ€ν APIμ λν μ°Έκ³ λ¬Έμμ νμμ κ°μ νμ§ μλ κ²°κ³Όλ‘ λ§μ κΈ°μ
μμ μ¬μ©νμ§ μλ νμ₯μμΈ .hwpλ‘ μμ±λμ΄ κ³΅μ
λλ κ²½μ°κ° λ§λ€. κ·Έλ‘ μΈν΄ μΉ κ°λ°μλ€μ νκΈ λ¬Έμλ₯Ό μ¬μ©νμ§ μμμλ λΆκ΅¬νκ³ νκΈ λ¬Έμλ₯Ό μ΄ μ μλ λ·°μ΄λ₯Ό μ€μΉν΄μΌλ§ νλ€. 곡곡λ°μ΄ν°ν¬νΈμ μ€ν API μ€μλ Swagger UI κΈ°λ°μ OpenAPI λͺ
μΈμλ₯Ό μ 곡
νκΈ°λ νλ€.
ν΄μΈ μμ΄νΌ μμ² μ ν
곡곡λ°μ΄ν°ν¬νΈμμ μ 곡νλ λͺ¨λ μ€ν APIμ ν΄λΉνλ λ¬Έμ λ μλμ§λ§ μ€ν API μ€ λ³΄μ μ κ΅λ΄ μμ΄νΌ λμμ΄ μλ ν΄μΈ μμ΄νΌμμ νΈμΆνλ κ²μ΄ μΉ λ°©νλ²½μΌλ‘ λ§νμ Έμλ κ²½μ°λ μλ€. λνμ μΌλ‘ νκ΅μ λ ₯κ±°λμμμ μ 곡νλ μ€ν APIλ‘ μ°Έκ³ λ¬Έμμ λμμμ§ μμ λ΄μ©μ΄μ§λ§ 곡곡λ°μ΄ν°ν¬νΈμ κ²μ΄νΈμ¨μ΄ λ°©μμ΄ μλ KPXμμ κ΄λ¦¬νλ μλ²λ‘ μμ²λκΈ° λλ¬Έμ AWSμ κ°μ ν΄λΌμ°λ νκ²½μμ νΈμΆν μ μκ³ κ΅λ΄ μλΉμ€λ‘ μ°ν
νκ±°λ μ¬μ©μ€μΈ μμ΄νΌ λμμ μ λ¬νμ¬ λ°©νλ²½ ν΄μ μ μ²
μ ν΄μΌνλ€.
κ²μ΄νΈμ¨μ΄ λ°©μ μ€ν API
곡곡λ°μ΄ν°ν¬νΈμ κ²μ΄νΈλ°©μ μ€ν APIλ μλν¬μΈνΈκ° apis.data.go.kr
μ κ°μ΄ ꡬμ±λλ©° μμμ νμΈν μ μλ―μ΄ κ²μ΄νΈμ¨μ΄μμ λ¬Έμ κ° λ°μνλ©΄ μ€ν APIκ° JSON νμ
μ μλ΅ κ²°κ³Όλ₯Ό μ§μνλλΌλ XMLλ‘λ§ μΆλ ₯λλ€λ μ μ½μ¬ν
μ΄ μλ€. μ΄λ¬ν μ μ½μ¬νμ κ³ λ €νμ§ μκ³ μλ΅κ²°κ³Όλ₯Ό JSONμΌλ‘ μ€ν΄νκ³ μ½λλ₯Ό μμ±νλ€λ©΄ μλμ κ°μ΄ μ€λ₯κ° λ°μν μ μλ€. μ¬μ§μ΄ HTTP μν μ½λκ° 200μΌλ‘ μλ΅λμ§λ§ μλ΅ κ²°κ³Όμ μ€λ₯μ λν λ΄μ©μΌλ‘ μ 곡νλ€λ μ
μΌλ‘ μΈν΄ HTTP μν μ½λλ₯Ό ν΅ν΄μ 1μ°¨μ μΌλ‘ ꡬλΆν μ μκ³ μλ΅ λ°λλ₯Ό 무쑰건 νμΈν΄μ μ μμ μΈ νΈμΆμΈμ§ μλμ§λ₯Ό ꡬλ³ν΄μΌνλ€.
Unexpected exception thrown: net.minidev.json.parser.ParseException: Unexpected token <OpenAPI_ServiceResponse>
<cmmMsgHeader>
<errMsg>SERVICE ERROR</errMsg>
<returnAuthMsg>SERVICE_KEY_IS_NOT_REGISTERED_ERROR</returnAuthMsg>
<returnReasonCode>30</returnReasonCode>
</cmmMsgHeader>
</OpenAPI_ServiceResponse> at position 229.
λ°λΌμ, 곡곡λ°μ΄ν°ν¬νΈμ λν μ°λμ νλ κ²½μ° μΉ κ°λ°μλ μλμ λν΄ κ³ λ € λλ λμμ ν΄μΌνλ€.
- κ²μ΄νΈμ¨μ΄ λ°©μ API νμΈ
- API νΈμΆ μ ν μ μ½ νμΈ
- JSON κ³Ό XML μ²λ¦¬ λͺ¨λ κ³ λ €
- κ°νμ μΈμ¦ν€ μ€λ₯ μΌμ΄μ€ λμ (API μ κ² ν¬ν¨)