statpan

LegiNote Projesi Geliştirme Hikayesi 3 - Go'da Request

  • Yazım Dili: Korece
  • Baz Ülke: Tüm Ülkelercountry-flag
  • BT

Oluşturulma: 2024-08-26

Oluşturulma: 2024-08-26 12:41

Merhaba, StatPan burada.

LegiNote yan proje geliştirme sürecini yazıyorum.

Önceki bölümü aşağıdaki bağlantıdan inceleyebilirsiniz.



Çalışan 1 Numaralı worker-bill

Bill ismi, nedense yabancı bir arkadaşın ismi gibi tanıdık geliyor; aşağıdaki kelime anlamından esinlendim.

Daha önce Meclis alan adı ile ilgili çeşitli İngilizce kelimeler ararken uygun değişken ve depo adı bulmak için, o zaman bulduklarımı kullandım.

LegiNote Projesi Geliştirme Hikayesi 3 - Go'da Request

bill kelimesinin anlamı



Çalışanın hedeflediği veri toplama noktasının OpenAPI spesifikasyonu şöyledir:


Giriş Parametreleri

LegiNote Projesi Geliştirme Hikayesi 3 - Go'da Request

Yasa Teklifi İnceleme ve İşleme API Giriş Parametresi


Çıkış Parametreleri

LegiNote Projesi Geliştirme Hikayesi 3 - Go'da Request

Yasa Teklifi İnceleme ve İşleme API Giriş Parametresi


Sağladığı veriler oldukça fazla ve oldukça detaylı bilgiler sunabileceği görünüyor.


HTTP İsteği İçin Gerekliler

Öncelikle yukarıdaki giriş parametrelerine sahip HTTP İsteği göndermek için nelere ihtiyacımız olduğunu inceleyelim:

URL, HTTP isteği yöntemi(burada belirtilmemiş olsa da, Get metodu kullanılıyor. Post kullanılmıyor :( ), KEY, Type, pIndex, pSize değerlerine ihtiyacımız var.

KEY değeri, diğer OpenAPI'larda olduğu gibi ayrı bir doğrulama anahtarı edinmenizi gerektirir.


Geliştirme hikayesi anlatan bir yerde olduğumuz için, referans varsa bağlantı vererek devam etmek isterdim... ancak henüz az bilindiği için mi bilmiyorum, Google'da doğrulama anahtarını alma yöntemini anlatan bir yazı bulamadım... Şimdilik basitçe resim odaklı bir açıklama yapalım...


LegiNote Projesi Geliştirme Hikayesi 3 - Go'da Request

Anasayfa

Ana ekrandan 'Kişisel Sayfa' düğmesine tıklayın.


LegiNote Projesi Geliştirme Hikayesi 3 - Go'da Request

Profilim


LegiNote Projesi Geliştirme Hikayesi 3 - Go'da Request

Kimlik Doğrulama Anahtarı Alma Ekranı

Yukarıdaki ekranda, kullanım amacı veya içeriği için ben 'Kamu Verisi Yarışması' amacıyla kullandığımı belirttim. Bu bölümü doldururken çok fazla endişelenmenize gerek yok, 1-2 satırlık bir sebep belirttiğiniz sürece (olumsuz bir neden değilse) onaylanacağını düşünüyorum.

Böylece elde ettiğiniz anahtar, yukarıdaki HTTP açıklamasında ihtiyaç duyduğumuz KEY'i sağlayacaktır.


LegiNote Projesi Geliştirme Hikayesi 3 - Go'da Request


Yukarıdaki URL'ye bir istek gönderelim (bir sonraki güncellemede mutlaka metodu da eklemeyi umuyorum).


go

```


Yukarıdaki kodla öncelikle çalışıp çalışmadığını kontrol ettim.

Bir ipucu vereyim, Header'ı mutlaka eklemeniz gerekiyor. Bu API'yi sorunsuz kullanmak istiyorsanız... (yarı tehdit)

Sonrasında Get URL'sine gerekli parametreleri ekliyoruz.

pIndex ve pSize değerlerinin integer olması gerekiyor ancak string türünü kullanmanız da çalışıyor. (Anlayamadım)

Type'da xml yöntemi de kullanılabiliyor ancak ben Json'u tercih ettim.



Sonuç Değeri

map[TVBPMBILL11:[map[head:[map[list_total_count:103305] map[RESULT:map[CODE:INFO-000 MESSAGE:정상 처리되었습니다.]]]] map[row:[map[AGE:22 BILL_ID:PRC_T2U4C0A8B2Z0A1Y3Y5G2H0F0G5E4F4 BILL_NAME:정치자금법 일부개정법률안 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:고동진의원 등 10인 PROPOSER_KIND:의원 PROPOSE_DT:2024-08-23 RST_MONA_CD:HS39431V RST_PROPOSER:고동진] map[AGE:22 BILL_ID:PRC_O2M4M0L8L2T0R1S3Q5R1P4Q0Y2W2X6 BILL_NAME:정당법 일부개정법률안 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?...


Yukarıdaki gibi bir sonuç elde edebilirsiniz.


Ben, bu nesneyi doğrudan kontrol etmek için tüm yapıları tanımlayarak değerleri aldım, bu da sayısız hata ayıklama süreci gerektirdi.


Bu değeri yapıya dönüştürme işlemi, karakter sayısı sınırlaması nedeniyle muhtemelen bir sonraki bölümde devam edecektir.

Geliştirme sürecinde 1 istek, bir bölümü tamamen ele geçirdi. Elbette bu OpenAPI'nin kullanım özelliğine bağlı olarak, API kullanımına ve yapı oluşturmaya çok zaman harcadım. Bu konuda diğer geliştiricilerin aynı sıkıntıları yaşamaması için bir çözüm bulmalıyım.


Yukarıdaki isteklerde beklendiği gibi çalışmayan veya garip koduma kızanlar, lütfen birer sigara da getirsinler.



Yorumlar0