Below are some methods using REST API which can be used to get View columns. Please note that this method is being written to be used using SharePoint hosted Add In, if you are using agains SPFx you just have to modify to use it against spHttpClient .But below code will give you logic an how to get columns against as List view.
If you already have view ID, you can ignore below methods
function getViews() {
var finalurl = appweburl + baseurl + "/lists('" + ListId + "')/views?@target='" + hostweburl + "'"
var executor = new SP.RequestExecutor(appweburl);
var settings = {
url: finalurl,
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: successHandlergetView,
error: errorHandlergetView
};
if (typeof payload != 'undefined') {
ajaxOptions.data = JSON.stringify(payload);
settings.data = JSON.stringify(payload);
}
executor.executeAsync(settings);
}
function successHandlergetView(data) {
var jsonObject = JSON.parse(data.body);
//var allviewjson = json.d.Items.results;
var viewResult = jsonObject.d.results
for (var i = 0; i < viewResult.length; i++) {
if (viewResult[i].ServerRelativeUrl == ("/"+spSourceURL))
{
currentView = spSourceURL;
currentViewID = viewResult[i].Id;
currentViewQuery = viewResult[i].ViewQuery;
break;
}
}
if (currentViewQuery != "") {
getViewColumns();
}
}
function errorHandlergetView(data) {
alert("Error - errorHandlergetView : " + data);
}
function getViewColumns() {
var currentViewID = "<ID of you view>"
var url = appweburl + baseurl + "/lists('" + ListId + "')/Views('" + currentViewID + "')/ViewFields";
var executor = new SP.RequestExecutor(appweburl);
var finalurl = url + "?@target='" + hostweburl + "'";
var settings = {
url: finalurl,
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: successHandlerViewcolumns,
error: errorHandlerViewcolumns
};
if (typeof payload != 'undefined') {
ajaxOptions.data = JSON.stringify(payload);
settings.data = JSON.stringify(payload);
}
executor.executeAsync(settings);
//return executeJson(url);
}
function successHandlerViewcolumns(data) {
var json = JSON.parse(data.body);
columnsArray = json.d.Items.results;
console.log(columnsArray);
//getListItems(currentViewQuery)
getListData(currentViewQuery);
//return data;
}
function errorHandlerViewcolumns(data) {
alert("Error - errorHandlerViewcolumns : " + data);
}
json
method returns a promise, so please try:response.json().then(data => console.log(data));
return response.json()
line of code, you will see data in console window. I don't know why, may be return statement has higher importance. Never tried to get into deep of it.