statpan

História do Desenvolvimento do Projeto LegiNote 3 - Request em Go

  • Idioma de escrita: Coreana
  • País de referência: Todos os paísescountry-flag
  • TI

Criado: 2024-08-26

Criado: 2024-08-26 12:41

Olá, sou o StatPan.

Estou escrevendo sobre o desenvolvimento do projeto paralelo LegiNote.

Para a parte anterior, consulte o seguinte link.



Trabalhador 1: worker-bill

O nome "bill" soa familiar, como o nome de um amigo estrangeiro, e a inspiração veio do significado da palavra.

Para encontrar nomes de variáveis e repositórios adequados, pesquisei várias palavras em inglês relacionadas ao domínio do parlamento anteriormente, e usei uma delas que encontrei naquela época.

História do Desenvolvimento do Projeto LegiNote 3 - Request em Go

Significado da palavra 'bill'



As especificações da OpenAPI do local onde o Worker coletará dados como alvo são as seguintes.


Parâmetros de entrada

História do Desenvolvimento do Projeto LegiNote 3 - Request em Go

Parâmetros de entrada da API de análise e processamento de propostas de lei


Parâmetros de saída

História do Desenvolvimento do Projeto LegiNote 3 - Request em Go

Parâmetros de entrada da API de análise e processamento de propostas de lei


Parece que muitos dados são fornecidos e que informações bastante detalhadas podem ser servidas.


Materiais de solicitação HTTP

Primeiro, vamos ver o que é necessário para fazer uma solicitação HTTP com os parâmetros de entrada acima.

URL, método de solicitação HTTP(não está aqui, mas é Get, Post não é permitido ㅠ), KEY, Type, pIndex, pSize valores.

No caso do valor KEY, você precisará obter uma chave de autenticação separada, assim como em outras APIs abertas.


Como este é um espaço para histórias de desenvolvimento, eu queria fornecer um link para referência, mas... como ainda é menor, não há artigos no Google sobre como obter uma chave de autenticação... Por enquanto, vamos dar uma olhada nas imagens aqui rapidamente...


História do Desenvolvimento do Projeto LegiNote 3 - Request em Go

Tela inicial

Clique no botão Minha página na tela inicial.


História do Desenvolvimento do Projeto LegiNote 3 - Request em Go

Minha página


História do Desenvolvimento do Projeto LegiNote 3 - Request em Go

Tela de emissão de chave de API

Na tela acima, para o propósito ou conteúdo de uso, no meu caso, escrevi brevemente que era para fins de competição de dados abertos. Não precisa se preocupar muito com a parte de preenchimento do conteúdo, acho que você receberá aprovação imediatamente, desde que não sejam 1 ou 2 linhas de razões suspeitas (?).

A chave obtida fornecerá a KEY necessária para a descrição HTTP acima.


História do Desenvolvimento do Projeto LegiNote 3 - Request em Go


Vamos enviar uma solicitação para o URL acima (espero que o método também seja incluído na próxima atualização).


go

```


Com o código acima, consegui verificar o funcionamento.

Uma dica é que você precisa adicionar o cabeçalho obrigatoriamente. Se quiser usar esta API sem problemas. (semi-ameaça)

Depois, preencha os parâmetros obrigatórios na URL Get.

Os valores de pIndex e pSize são especificados como inteiros, mas você pode usar o tipo string também. (incompreensível)

O método XML também pode ser usado para o tipo, mas escolhi JSON.



Valor resultante

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?...


Você pode obter o valor resultante acima.


Para controlar diretamente o objeto separadamente, defini todas as structs e obtive os valores, o que também levou a inúmeras depurações.


A conversão de Unmarshal deste valor para struct provavelmente precisará ser continuada na próxima parte devido à limitação de caracteres.

Uma única solicitação consumiu toda uma parte do desenvolvimento. Claro, considerando a natureza do uso desta API aberta, gastei muito tempo usando a API e estabelecendo a estrutura da struct, mas preciso encontrar uma maneira de evitar que outras pessoas passem pelo mesmo sofrimento.


Se algo não funcionar conforme o esperado em uma das solicitações acima ou se você tiver alguma reclamação sobre meu código estranho, por favor, me avise também.



Comentários0