[JAVA] Implementieren Sie die Suchfunktion mit der Rakuten Books (DVD) API

Einführung

Wir entwickeln derzeit einen Filmsuchdienst und haben die asynchrone Kommunikation über Rails und Ajax implementiert. Nach ein paar Tagen der Sucht habe ich es endlich implementiert, also werde ich es aufzeichnen. Ich berührte jquery ein wenig, als ich Bewegungen wie Hamburgerknöpfe machte, aber es war mein erstes Mal, dass ich Ajax berührte, und ich blieb ein paar Tage lang stecken. (Es gab auch eine Beziehung, in der der Code nicht wiedergegeben wurde, weil der Server nicht neu gestartet wurde.)

Umgebung

-rails (5.2.4.1) -ruby (2.5.3)

Wenn Sie Rakuten API (im Fall von Rails) implementieren möchten, installieren Sie gem. Der Montagevorgang entfällt. Weitere Informationen finden Sie hier __ __ hier __

Controller-Verarbeitungsspezifikation

Geben Sie zunächst in posts_contriller die Aktion an, um den im Suchfeld eingegebenen Inhalt zu verarbeiten.

routes.rb


get 'search', to: 'posts#search' #Führen Sie eine Suchaktion aus, wenn Sie nach einem Schlüsselwort suchen

Suche, Ansicht der Suchergebnisanzeige

Suchformular

erb:search_from.html.erb


#Kürzung
 <div class='content'>
  <div id="search-box">
    #url: search_Suchaktion mit Pfad abrufen
    <%= form_with(url: search_path, method: :get) do |f| %> 
      <%= f.text_area :title, id: :title, placeholder: "Geben Sie das Schlüsselwort ein", style: "width: 200px;"%> #:Das Suchwort wird im Titel getroffen
      <%= f.submit "Suche", id: "search_button"%> #Sucheワード記入ご自動SucheかSucheボタン後にSucheどちらでも
    <%end%>
  </div>
  <h2>Suchergebnisse</h2>
  <div id='item_list'> 
    #Sie können das Rendering teilweise mit, aber nach Ajax-Verarbeitung zurückgeben_list.html.Ich versuche erb anzuzeigen.
  </div>
</div>

Suchergebnisansicht

erb:item_list.html.erb


<% items.each do |item| %>
  <% if item[:title].present? %>
    <div class="item">
      <div class= "item-image">
        <%= image_tag(item[:imageUrl], width: '55px') %>
      </div>
      <div class= "item-title">
        <p><%= item[:title] %></p>
      </div>
    </div>
  <% end %>
<% end %>

Suchaktion

posts_controller.rb


class PostsController < ApplicationController
~ Abkürzung
  def search
    contents = render_to_string(partial: 'posts/item_list.html.erb', locals:{items: search_by_rakuten(params[:title])})
    #Gibt den Inhalt an json zurück
    render json: {contents: contents} #Wenn Sie es nicht hashen, wird es nicht gelesen
  end

  private

   def search_by_rakuten(title)
    items = [] #Methode aufrufen[]Leer lassen
    if title.present?
      results = RakutenWebService::Books::DVD.search(
        title: title, #Suchfeldschlüsselwörter
        booksGenreId: '003', #Bezeichnung des Film-DVD-Genres
        hits: 10 #Erhalten Sie nur 10 Trefferinformationen
        #Erhalten Sie Informationen, indem Sie Bedingungen angeben
      )
      results.each do |result|
         #Hash die erfassten Informationen und geben Sie einen Wert in den Schlüssel ein
        item = {
          title: result['title'],
          url: result['itemUrl'],
          imageUrl: result['smallImageUrl'].gsub('?_ex=64x64', '')
        }#Fügen Sie die Hash-Daten in ein Array ein
        items << item
      end
    end
    items
  end
end

Ajax

post.js



$(function{
  funtion search(title){
  //Kürzung
  $.ajax({
        url: "/search",
        type: "GET", //Greifen Sie mit get auf die Suchaktion zu
        dataType: "json",
        async: true,
        data: { title: title }, //Suchparameter angeben(:title)
      }).done(function (data) {
        $("#item_list").css("display", "");
        $("#item_list").html(data.contents); //render json:{contents: contents}Inhaltsanzeige von
      });
}
})

Die Suchfunktion ist jetzt implementiert.

Am Ende

Mit dem Obigen kann die Suchfunktion implementiert werden und die gesuchten Informationen können erhalten werden. Ich habe vier oder fünf Tage gebraucht, um diese Funktion zu implementieren. Es machte mir klar, dass mein Json, Ajax und Ruby kein Wissen hatten, aber ich konnte die Großartigkeit der Meinungsverschiedenheitskommunikation erkennen. Wir werden uns weiterentwickeln.

Recommended Posts

Implementieren Sie die Suchfunktion mit der Rakuten Books (DVD) API
[Schienen] Implementieren Sie die Benutzersuchfunktion
[Ruby on Rails] Implementieren Sie die Anmeldefunktion von add_token_to_users mit API
Versuchen Sie, eine Anmeldefunktion mit Spring-Boot zu implementieren
So implementieren Sie TextInputLayout mit Validierungsfunktion
Implementieren Sie die Paging-Funktion mit Spring Boot + Thymeleaf
[Rails] Buchsuche mit Amazon PA API
Implementieren Sie die Teilübereinstimmungssuchfunktion ohne Ransuck
Versuchen Sie, die Anmeldefunktion mit Spring Boot zu implementieren
[Java] Holen Sie sich Bilder mit der Google Custom Search API
Lassen Sie uns eine Suchfunktion mit Rails (Ransack) machen
Wiederholen Sie mit Feign (OpenFeign)
[Java EE] Implementieren Sie den Client mit WebSocket
Feign, das einen API-Client nur mit einer Schnittstelle implementiert, ist sehr praktisch!
API-Integration von Java mit Jersey Client
Interagieren Sie mit der LINE Message API mit Lambda (Java)
Implementieren Sie die Suchfunktion mit der Rakuten Books (DVD) API
Implementieren wir eine Funktion, um die Anzahl der Zugriffe auf die API mit SpringBoot + Redis zu begrenzen
Implementieren Sie die Nachsuchfunktion in der Rails-Anwendung (where-Methode).
[Java] Ich habe versucht, die Yahoo API-Produktsuche zu implementieren