REST API - Android Studio、Node.js、Firebase
Posted
技术标签:
【中文标题】REST API - Android Studio、Node.js、Firebase【英文标题】:REST API - Android Studio, Node.js, Firebase 【发布时间】:2019-02-20 09:11:21 【问题描述】:我是一名在这家公司参加 OJT 的大学生,我的任务是创建一个使用 REST API 将数据添加到 Firebase 数据库的 android 应用。该应用程序是一个项目列表应用程序,我需要在其中注册、登录、项目列表视图,并能够添加、编辑和删除项目。我需要使用 Node.js、Android Studio 和 Firebase。我的团队负责人让我学习 REST API、Node.js、JSON、Firebase,我现在有点了解我应该用这些做什么,至少是概念和理论上。
问题在于代码。这是压倒性的。我是 javascript 新手,我刚开始学习它是在给我这个任务的那天(一周前)。而且我不知道如何在 Android Studio 和 Node.js 上创建代码,以便 API 可以处理客户端和服务器之间的请求/响应。请记住,我的截止日期大约为 4-5 周。
我现在的代码非常基础,我什至不确定它们是否正确。现在我只有注册活动和 Node.js 上的服务器。我使用 Android Studio 3.1.4,节点 v8.11.4,npm v5.6.0
aSignUpActivity.java
public class aSignUpActivity extends AppCompatActivity
EditText etFname, etLname, etEmail, etUname, etPword, etConfPword;
Button btnConfirmSU;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_a_sign_up);
etFname = (EditText) findViewById(R.id.asuFnameET);
etLname = (EditText) findViewById(R.id.asuLnameET);
etEmail = (EditText) findViewById(R.id.asuEmailET);
etUname = (EditText) findViewById(R.id.asuUnameET);
etPword = (EditText) findViewById(R.id.asuPwordET);
etConfPword = (EditText) findViewById(R.id.asuCpwordET);
btnConfirmSU = (Button) findViewById(R.id.asuConfirmSU);
btnConfirmSU.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
confirmSignupClicked();
);
public void confirmSignupClicked()
String fName = etFname.getText().toString();
String lName = etLname.getText().toString();
String eMail = etEmail.getText().toString();
String uName = etUname.getText().toString();
String pWord = etPword.getText().toString();
String cPword = etConfPword.getText().toString();
if(TextUtils.isEmpty(fName) || TextUtils.isEmpty(lName) || TextUtils.isEmpty(eMail) || TextUtils.isEmpty(uName) || TextUtils.isEmpty(pWord) || TextUtils.isEmpty(cPword))
Toast.makeText(this, "Can't leave any text fields empty.", Toast.LENGTH_SHORT).show();
else
Intent intent = new Intent(aSignUpActivity.this, aStartPageActivity.class);
Toast.makeText(this, "Account created.", Toast.LENGTH_SHORT).show();
startActivity(intent);
server.js(我复制粘贴了这些代码并对其进行了编辑以适应我的情况)
var admin = require('firebase-admin')
var serviceAccount = require('./myprivatekey.json')
// var port = process.env.PORT || 3000
// var express = require('express')
// var app = express()
// var bodyParser = require('body-parser')
admin.initializeApp(
credential: admin.credential.cert(serviceAccount),
databaseURL: "mydatabase.firebaseio.com"
)
// app.use(bodyParser.urlencoded(extended: true))
// app.use(bodyParser.json())
var db = admin.database()
var dbRef = db.ref('usersinfo')
//API - SIGN UP USER
function addUser(userid, username, email, password)
var usersRef = dbRef.child("user")
usersRef.set(
"USER ID": userid,
"USERNAME": username,
"EMAIL": email,
"PASSWORD": password,
)
//testing if function works
addUser("test", "test", "test", "test")
//API - ADD ITEM
function addItem(userid, image, name, description)
var itemsRef = dbRef.child("useritems")
itemsRef.set(
"USER ID": userid,
"IMAGE": image,
"NAME": name,
"DESCRIPTION": description
)
var itemId = itemsRef.key
//testing if function works
addItem("test", "test", "test", "test")
//API - VIEW ITEM
function viewItem(itemId)
var itemRef = dbRef.child("useritems/" + itemId)
itemRef.on("value", function(snapshot)
if (snapshot.exists())
console.log(snapshot.val())
return snapshot.val()
else
console.log("Cannot view item.", itemId)
return null
, function (errorObject)
console.log("error: " + errorObject.code)
);
//API - EDIT ITEM
function editItem(itemId, editimage, editname, editdescription)
var itemRef = dbRef.child("useritems/", itemId)
itemRef.update(
"IMAGE": editimage,
"NAME": editname,
"DESCRIPTION": editdescription
)
console.log("Item successfully edited")
itemRef.on("value", function(snapshot)
console.log(snapshot.val())
, function (errorObject)
console.log("Edit failed: " + errorObect.code)
)
//API - DELETE ITEM
function deleteItem(itemId)
itemRef = dbRef.child("useritems/" + itemId)
itemRef.once("value")
.then(function(snapshot)
if(snapshot.exists())
console.log("Item removed successfully.")
return "Item removed."
else
console.log("Item does not exist")
return "Error."
)
.catch(function(error)
console.log("deleteItem failed: " + error.code)
)
我要问的是,是否有人可以为我指明如何开始的正确方向?喜欢资源链接?关于我的代码的建议?对初学者友好的东西。 YouTube 和 google 上的大多数示例使用 html 作为客户端的前端,或者使用教程作为 Android 聊天应用程序,或者使用 mongoDB/SQL 作为数据库。也许我搜索得不够好?请帮忙。
【问题讨论】:
firebase 拥有实时数据库,因此您无需后端编码即可完成所有这些操作 这是真的,但根据要求,我需要使用 node.js 编写自己的 API 【参考方案1】:我会找到一个关于如何制作 node.js REST 应用程序(可能使用 Express)并完成它的教程。使用 Postman 发送请求。让服务器正常工作后,您可以继续使用 Andraid 应用程序。我建议使用 Retrofit 来提出请求。
【讨论】:
你好 nasch,显然对要求有误解,我现在已经解决了。我应该使用 Firebase 或 Node.js,而不是两者。我确实在使用 Retrofit 和 Postman。感谢您的回复。 太棒了,很高兴你明白了。以上是关于REST API - Android Studio、Node.js、Firebase的主要内容,如果未能解决你的问题,请参考以下文章
通过 REST API 发布变量 - Visual Studio Team Services
证明 REST API 项目的 Visual Studio 升级的合理性
使用 Visual Studio 2017 负载测试测试具有不同请求主体的 REST API