[RUBY] Einführung in "Einführung in die praktische Rostprogrammierung" (Tag 3)

pp.190 - 192

S.190 Web Framework-Setup

PS work> cargo new todo
     Created binary (application) `todo` package
PS work> cd todo
PS work/todo> cargo add actix-web actix-rt
    Updating 'https://github.com/rust-lang/crates.io-index' index
remote: Enumerating objects: 1467, done.
remote: Counting objects: 100% (1467/1467), done.
remote: Compressing objects: 100% (129/129), done.
Rremote: Total 2037 (delta 1409), reused 1393 (delta 1336), pack-reused 570
Receiving objects: 100% (2037/2037), 825.43 KiB | 1.87 MiB/s, done.
Resolving deltas: 100% (1446/1446), completed with 376 local objects.
From https://github.com/rust-lang/crates.io-index
   2092a0fa4..c44091585  master     -> origin/master
      Adding actix-web v2.0.0 to dependencies
      Adding actix-rt v1.1.1 to dependencies
PS work/todo> 

Dauert es nicht eine Minute? Rust hat den Eindruck, dass verwandte Tools auch leicht funktionieren.

Es wird wie folgt zu Cargo.toml hinzugefügt.

Cargo.toml


[dependencies]
actix-web = "2.0.0"
actix-rt = "1.1.1"

p.192 src/main.rs

src/main.rs


use actix_web::{get, App, HttpResponse, HttpServer};

#[get("/")]
async fn index() -> Result<HttpResponse, actix_web::Error> {
    let response_body = "Hello world!";
    Ok(HttpResponse::Ok().body(response_body))
}

#[actix_rt::main]
async fn main() -> Result<(), actix_web::Error> {
    HttpServer::new(move || App::new().service(index))
        .bind("0.0.0.0:8008")?
        .run()
        .await?;
    Ok(())
}

Die Menge an Beschreibung, die nicht schmerzhaft ist. Es gibt Funktionen wie "asynchron", die beim Aufbau eines umfassenden Dienstes geschätzt werden. Als vorläufige Umfrage wurde der folgende Code auch mit Sinatra (Ruby) experimentiert. Es ist unglaublich kurz.

myapp.rb


require 'sinatra'

set :bind, '0.0.0.0'

get '/' do
	'Hello world!'
end

p.192 cargo run

Nach dem Kompilieren von 197 Modulen wird der Dienst gestartet.

PS work/todo> cargo run
   Compiling proc-macro2 v1.0.19
   Compiling unicode-xid v0.2.1
   Compiling syn v1.0.39
   Compiling cfg-if v0.1.10
   Compiling winapi v0.3.9
   Compiling memchr v2.3.3
   Compiling winapi-build v0.1.1
   Compiling libc v0.2.76
   Compiling log v0.4.11
   Compiling lazy_static v1.4.0
   Compiling futures-core v0.3.5
   Compiling slab v0.4.2
   Compiling futures-sink v0.3.5
   Compiling winapi v0.2.8
   Compiling bytes v0.5.6
   Compiling pin-project-internal v0.4.23
   Compiling proc-macro-nested v0.1.6
   Compiling iovec v0.1.4
   Compiling proc-macro-hack v0.5.18
   Compiling once_cell v1.4.1
   Compiling autocfg v1.0.1
   Compiling pin-project-lite v0.1.7                                                   
   Compiling pin-utils v0.1.0
   Compiling futures-io v0.3.5
   Compiling smallvec v1.4.2
   Compiling instant v0.1.6
   Compiling scopeguard v1.1.0
   Compiling bitflags v1.2.1
   Compiling getrandom v0.1.14
   Compiling matches v0.1.8
   Compiling tinyvec v0.3.4
   Compiling adler v0.2.3
   Compiling serde_derive v1.0.115
   Compiling failure_derive v0.1.8
   Compiling copyless v0.1.5                                                           
   Compiling itoa v0.4.6
   Compiling gimli v0.22.0
   Compiling serde v1.0.115
   Compiling percent-encoding v2.1.0
   Compiling either v1.6.0
   Compiling ppv-lite86 v0.2.9
   Compiling rustc-demangle v0.1.16
   Compiling object v0.20.0                                                            
   Compiling unicode-segmentation v1.6.0                                               
   Compiling match_cfg v0.1.0
   Compiling ipconfig v0.2.2                                                           
   Compiling fnv v1.0.7
   Compiling cc v1.0.59
   Compiling linked-hash-map v0.5.3
   Compiling crc32fast v1.2.0
   Compiling widestring v0.4.2
   Compiling byteorder v1.3.4                                                          
   Compiling quick-error v1.2.3                                                        
   Compiling ryu v1.0.5                                                                
   Compiling regex-syntax v0.6.18                                                      
   Compiling serde_json v1.0.57                                                        
   Compiling encoding_rs v0.8.24
   Compiling httparse v1.3.4
   Compiling dtoa v0.4.6
   Compiling mime v0.3.16
   Compiling base64 v0.11.0
   Compiling sha1 v0.6.0
   Compiling language-tags v0.2.2                                                      
   Compiling mio-uds v0.6.8
   Compiling ws2_32-sys v0.2.1
   Compiling kernel32-sys v0.2.2                                                       
   Compiling thread_local v1.0.1                                                       
   Compiling tracing-core v0.1.15
   Compiling futures-channel v0.3.5
   Compiling bytestring v0.1.5                                                         
   Compiling futures-task v0.3.5
   Compiling num-traits v0.2.12
   Compiling hashbrown v0.8.2
   Compiling num-integer v0.1.43
   Compiling indexmap v1.5.2
   Compiling lock_api v0.4.1
   Compiling unicode-bidi v0.3.4
   Compiling miniz_oxide v0.4.1
   Compiling unicode-normalization v0.1.13
   Compiling heck v0.3.1
   Compiling addr2line v0.13.0
   Compiling http v0.2.1
   Compiling lru-cache v0.1.2
   Compiling brotli-sys v0.3.2
   Compiling idna v0.2.0
   Compiling aho-corasick v0.7.13
   Compiling quote v1.0.7
   Compiling tracing v0.1.19
   Compiling num_cpus v1.13.0
   Compiling backtrace v0.3.50
   Compiling rand_core v0.5.1
   Compiling flate2 v1.0.17
   Compiling url v2.1.1                                                                
   Compiling fxhash v0.2.1                                                             
   Compiling net2 v0.2.34
   Compiling parking_lot_core v0.8.0                                                   
   Compiling socket2 v0.3.12                                                           
   Compiling hostname v0.3.1                                                           
   Compiling winreg v0.6.2
   Compiling time v0.1.44
   Compiling regex v1.3.9
   Compiling threadpool v1.8.1                                                         
   Compiling rand_chacha v0.2.2
   Compiling miow v0.2.1
   Compiling parking_lot v0.11.0
   Compiling resolv-conf v0.6.3
   Compiling brotli2 v0.3.2                                                            
   Compiling chrono v0.4.15
   Compiling rand v0.7.3
   Compiling mio v0.6.22                                                               
   Compiling synstructure v0.12.4
   Compiling tokio v0.2.22                                                             
   Compiling futures-macro v0.3.5
   Compiling derive_more v0.99.9
   Compiling actix-macros v0.1.2                                                       
   Compiling async-trait v0.1.40
   Compiling enum-as-inner v0.3.3                                                      
   Compiling actix-web-codegen v0.2.2
   Compiling tokio-util v0.2.0                                                         
   Compiling tokio-util v0.3.1
   Compiling pin-project v0.4.23
   Compiling failure v0.1.8
   Compiling actix-threadpool v0.3.3
   Compiling actix-codec v0.2.0
   Compiling futures-util v0.3.5
   Compiling futures-executor v0.3.5
   Compiling actix-rt v1.1.1
   Compiling actix-service v1.0.6                                                      
   Compiling h2 v0.2.6
   Compiling futures v0.3.5                                                            
   Compiling actix-utils v1.0.6                                                        
   Compiling trust-dns-proto v0.18.0-alpha.2
   Compiling serde_urlencoded v0.6.1                                                   
   Compiling actix-router v0.2.4
   Compiling actix-server v1.0.3
   Compiling actix-tls v1.0.0                                                          
   Compiling trust-dns-resolver v0.18.0-alpha.2                                        
   Compiling actix-testing v1.0.1                                                      
   Compiling actix-connect v1.0.2
   Compiling actix-http v1.0.1                                                         
   Compiling awc v1.0.1
   Compiling actix-web v2.0.0                                                          
   Compiling todo v0.1.0 (work/todo)
    Finished dev [unoptimized + debuginfo] target(s) in 3m 04s                         
     Running `target/debug/todo.exe`

20200902.png

Sie können diesen Punkt innerhalb von 10 Minuten erreichen, nachdem Sie "Cargo New To Do" ausgeführt haben (natürlich gibt es Unterschiede in den Spezifikationen des verwendeten PCs). Mit dieser Leichtigkeit können Sie auch bei Freigabe der REST-API genügend Reaktionsgeschwindigkeit bei der Arbeit erzielen.

Recommended Posts

Einführung in "Einführung in die praktische Rostprogrammierung" (Tag 3)
Beginnen wir mit der parallelen Programmierung
Wie fange ich mit schlank an?
Ich habe versucht, mit Web Assembly zu beginnen
[Hinweis] Erste Schritte mit Rspec
Erste Schritte mit Eclipse Micro Profile
Rails-Anfänger haben versucht, mit RSpec zu beginnen
Beginnen Sie mit Gradle
Ich habe versucht, mit Spring Data JPA zu beginnen
Beginnen Sie mit Spring Boot
Jetzt ist es an der Zeit, mit der Stream-API zu beginnen
Erste Schritte mit JDBC mit PostgresSQL unter MacOS
Ich habe versucht, mit Swagger mit Spring Boot zu beginnen
Einfache Codeüberprüfung für den Einstieg in Jenkins / SonarQube: Statische Analyse
Einführung in die funktionale Programmierung (Java, Javascript)
Einführung in Algorithmen mit der Java-Shakutori-Methode
Einführung in die Programmierung für Studenten: Einführung
Memo mit Struts2 + Ajax zu bekommen
Die Programmierung von Ruby-Spielen begann mit einem Browser: Einführung in Nyle-Canvas (DXRuby-Stil)
Einführung in die Programmierung für Studenten: Variablen
Einführung in die praktische Containerentwicklung von Docker / Kubernetes
Einführung in Algorithmen mit Java --Search (Breitenprioritätssuche)
Einführung in den Roboterkampf mit Robocode (Umgebungskonstruktion)
Beginnen wir mit Java-Create a Development Environment ②
Beginnen wir mit Java-Create a Development Environment ①
Einführung in Algorithmen mit Java --Search (Bit Full Search)
Einführung in Algorithmen mit Java-Suche (Vollsuche, Halbierungssuche)
Wie komme ich zum heutigen Tag?
Einführung in Kotlin für iOS-Entwickler ⑤-Practical XML
Erste Schritte mit Kotlin zum Senden an Java-Entwickler
Vielleicht funktioniert es! Beginnen wir mit Docker!
Versuchen Sie, den API-Schlüssel von Redmine mit Ruby zu erhalten
So löschen Sie eine Ressourcendatei mit Spring-Boot
Erste Schritte mit Doma-Einführung in die Kriterien-API
Einführung in den Roboterkampf mit Robocode (Anfängerentwicklung)
[Einführung in Spring Boot] Authentifizierungsfunktion mit Spring Security
[Einführung in Java] Liste der Dinge, die am 14. Tag der Programmierung gefangen wurden
[DDD] Was ist die am besten zugängliche Architektur, um mit domänengesteuertem Design zu beginnen?