Elixir ~외부 API 웹 표시~

히사시부리입니다. 미즈노입니다.

여기까지의 모습



기타큐슈에 생활의 장소를 옮겨, 잠시 생활의 안정이나 음악, 디자인, 영상 주위를 열심히 하고 있었습니다만, 사정이 있어 1개월 정도 중지하고 있던 Elixir 학습을 재개했습니다.

자신의 기사를 되돌아 보면 "어, 여기 어째서 이해할 수 있었는지 모른다"라고 하는 것이 많이 있는 것도 눈치챘습니다.

DB에서 얻은 데이터에서 "열 추출"



piacere씨의 문서 Excel에서 함수형 언어 마스터 네 번째: 웹에 외부 API 데이터 표시 의 전반 부분, DB로부터 취득한 데이터로부터의 열의 추출을 실시해 갑니다.

lib/sample_db_web/templates/page/index.html.eex

<%
result = Db.query( "select * from members" )
data = result |> Db.columns_rows
columns = result |> Db.columns
%>
<table border="1">
<tr>
  <%= for column <- columns do %>
  <th><%= column %></td>
  <% end %>
</tr>
<%= for record <- data do %>
<tr>
  <%= for column <- columns do %>
  <td><%= record[ column ] %></td>
  <% end %>
</tr>
<% end %>
</table>


지금까지의 코드로 표시시킨 DB의 내용에 대해,

|> Enum.filter( fn( column ) -> column == "name" || column == "age" end )

Enum.filter에서 이름과 나이의 열만 필터링합니다.
DB에 중복 데이터가 남아 있기 때문에 같은 이름이 여러 번 나와 버립니다. DB 측에서 이것을 깨끗하게 할 수 없는지가 과제입니다.

외부 API를 호출하고 웹 디스플레이



Smallex 소개와 믹스 deps.get은 할애합니다.

lib/sample_db_web/templates/page/index.html.eex

<%
result = Json.get( "https://qiita.com", "/api/v2/items?query=elixir" )
data = result
columns = [ "id", "title", "created_at" ]
%>

이후의 HTML 부분은 DB 표시와 다르지 않다.
즉, 선두의 DB로부터의 데이터 취득의 부분을 외부 API로부터의 데이터 호출에 재기록하는 것만으로, 똑같이 Web 표시시켜 취급할 수 있다고 하는 것입니다.

(이 중요한 포인트를 눈치채지 않고 전부 사경하고 있던 것은 효율이 나빴을지도 모른다. 이 시리즈는 통산으로 5회 정도씩 복습하고 있습니다만... 쓴웃음)로, 이러한 표시 되었습니다. 전회 맹렬한 페이스로 Qiita 문서를 쓰고 있었을 때는, 이 일람에 자신의 그것도 섞여 있어, 그 때는 꽤 시기 적절한 스크린샷을 찍을 수 있었습니다. (웃음 # 알게 된 것 DB 표시에서 열 추출에는 위의 Enum.filter의 식이 중요합니다. 외부 API 호출, Web표시를 할 수 있다.아직 코드 자체 스스로 체계적 이해를 써 쓰는 것은 어렵습니다만, 이상 2점을 중요한 포인트로서 누를 수 있었습니다. 최선을 다하겠습니다.
켄토 미즈노

좋은 웹페이지 즐겨찾기