statpan

Kisah Pengembangan Proyek LegiNote 3 - Request di Go

  • Bahasa Penulisan: Bahasa Korea
  • Negara Standar: Semua Negaracountry-flag
  • TI

Dibuat: 2024-08-26

Dibuat: 2024-08-26 12:41

Halo, saya StatPan.

Saya sedang menulis tentang pengembangan proyek sampingan LegiNote.

Untuk bagian sebelumnya, silakan lihat tautan berikut.



Worker 1: worker-bill

Nama "bill" terdengar seperti nama teman asing yang akrab, dan inspirasi namanya datang dari arti kata berikut.

Untuk mencari nama variabel dan repositori yang tepat, sebelumnya saya telah mencari berbagai istilah bahasa Inggris yang berkaitan dengan domain parlemen, dan saya menggunakannya kembali.

Kisah Pengembangan Proyek LegiNote 3 - Request di Go

Arti kata bill



Spesifikasi OpenAPI tempat Worker akan mengumpulkan data adalah sebagai berikut:


Parameter Input

Kisah Pengembangan Proyek LegiNote 3 - Request di Go

Parameter Input API Pemeriksaan dan Pengolahan RUU


Parameter Output

Kisah Pengembangan Proyek LegiNote 3 - Request di Go

Parameter Input API Pemeriksaan dan Pengolahan RUU


Data yang disediakan cukup banyak, dan tampaknya dapat memberikan informasi yang cukup detail.


Persiapan Http Request

Pertama-tama, mari kita lihat apa saja yang dibutuhkan untuk permintaan Http Request dengan parameter input di atas.

URL, metode permintaan Http(Meskipun tidak disebutkan di sini, Get ya, Post tidak berfungsi), KEY, Type, pIndex, pSize adalah nilai yang diperlukan.

Untuk nilai KEY, seperti OpenAPI lainnya, Anda perlu mendapatkan kunci autentikasi terpisah.


Karena ini adalah cerita tentang pengembangan, saya ingin menyertakan tautan ke referensi jika ada... Namun, karena masih tergolong minor, sepertinya tidak ada postingan di Google yang menjelaskan cara mendapatkan kunci autentikasi... Untuk saat ini, saya akan menjelaskannya dengan gambar saja...


Kisah Pengembangan Proyek LegiNote 3 - Request di Go

Halaman Utama

Tekan tombol My Page di halaman beranda.


Kisah Pengembangan Proyek LegiNote 3 - Request di Go

Halaman Profil Saya


Kisah Pengembangan Proyek LegiNote 3 - Request di Go

Layar Penerbitan API Key

Pada layar di atas, untuk bagian penggunaan atau konten, dalam kasus saya, saya menulis dengan singkat bahwa itu untuk tujuan kompetisi data publik. Anda tidak perlu terlalu khawatir tentang bagian pengisian konten, saya rasa Anda akan langsung mendapatkan persetujuan selama tidak ada alasan yang tidak pantas (?).

Kunci yang Anda dapatkan akan mengeluarkan KEY yang dibutuhkan dalam penjelasan HTTP di atas.


Kisah Pengembangan Proyek LegiNote 3 - Request di Go


Mari kita coba mengirimkan permintaan ke URL di atas (Semoga di pembaruan berikutnya, metode juga disertakan).


go

```


Dengan kode seperti di atas, saya dapat memverifikasi operasinya.

Sebagai tips, Anda harus menambahkan Header. Jika Anda ingin menggunakan API ini dengan lancar (ancaman).

Setelah itu, isi param yang diperlukan di Get url.

Untuk nilai pIndex dan pSize, meskipun tertulis integer, Anda tetap dapat menggunakan tipe string. (Tidak mengerti)

Tipe juga dapat menggunakan metode xml, tetapi saya memilih Json.



Nilai Hasil

map[TVBPMBILL11:[map[head:[map[list_total_count:103305] map[RESULT:map[CODE:INFO-000 MESSAGE:Pemrosesan berhasil.]]]] map[row:[map[AGE:22 BILL_ID:PRC_T2U4C0A8B2Z0A1Y3Y5G2H0F0G5E4F4 BILL_NAME:Rancangan Undang-Undang tentang Perubahan Sebagian Undang-Undang tentang Dana Politik BILL_NO:2203179 CMT_PRESENT_DT: CMT_PROC_DT: CMT_PROC_RESULT_CD: COMMITTEE_DT: COMMITTEE_PROC_DT: CURR_COMMITTEE: CURR_COMMITTEE_ID: LAW_PRESENT_DT: LAW_PROC_DT: LAW_PROC_RESULT_CD: LAW_SUBMIT_DT: LINK_URL:https://likms.assembly.go.kr/bill/billDetail.do?billId=PRC_T2U4C0A8B2Z0A1Y3Y5G2H0F0G5E4F4 PROC_DT: PROC_RESULT_CD: PROPOSER:Anggota DPR RI, dkk. PROPOSER_KIND:Anggota DPR PROPOSE_DT:2024-08-23 RST_MONA_CD:HS39431V RST_PROPOSER:Anggota DPR RI, dkk.] map[AGE:22 BILL_ID:PRC_O2M4M0L8L2T0R1S3Q5R1P4Q0Y2W2X6 BILL_NAME:Rancangan Undang-Undang tentang Perubahan Sebagian Undang-Undang tentang Partai Politik BILL_NO:2203178 CMT_PRESENT_DT: CMT_PROC_DT: CMT_PROC_RESULT_CD: COMMITTEE_DT: COMMITTEE_PROC_DT: CURR_COMMITTEE: CURR_COMMITTEE_ID: LAW_PRESENT_DT: LAW_PROC_DT: LAW_PROC_RESULT_CD: LAW_SUBMIT_DT: LINK_URL:https://likms.assembly.go.kr/bill/billDetail.do?...


Anda dapat memperoleh nilai hasil seperti di atas.


Secara terpisah, untuk mengontrol objek tersebut secara langsung, saya mendefinisikan semua struct dan mengambil nilainya, dan itu juga melewati banyak proses debugging.


Mengenai Unmarshal nilai tersebut ke dalam struct, karena batasan jumlah karakter, saya rasa saya harus melanjutkannya di bagian selanjutnya.

Satu Request telah menghabiskan satu bagian dari cerita pengembangan ini. Tentu saja, mengingat karakteristik penggunaan OpenAPI ini, saya menghabiskan banyak waktu untuk menggunakan API dan mengatur struktur struct, tetapi saya perlu mencari cara agar orang lain tidak mengalami kesulitan yang sama.


Bagi Anda yang mengalami masalah dengan permintaan di atas atau tidak puas dengan kode saya yang aneh, silakan siapkan rokoknya juga.



Komentar0